首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring boot自动配置

Spring boot自动配置
EN

Stack Overflow用户
提问于 2018-09-14 20:07:28
回答 3查看 215关注 0票数 1

在我的用例中,我有两个项目,分别是projectA和projectB,projectB被添加为projectA中的maven依赖项。我正在尝试从projectA调用projectB服务。为此,我在projectB中创建了一个配置类:

代码语言:javascript
复制
@Configuration
public class BeanConfig {

    @Bean
    @ConditionalOnMissingBean
    public MyService<String, Object> myBean(){
        return new MyServiceImpl();
    }
}

在MyServiceImpl中,我正在自动编写MyDao。错误是它不能为MyDao创建bean。

如果我在下面的projectA主类中提到的话。

代码语言:javascript
复制
@SpringBootApplication(scanBasePackages = { "org.my.service" }) 

一切运行正常。

如何创建Bean而不在项目A中提及基包?

EN

回答 3

Stack Overflow用户

发布于 2018-09-14 20:53:58

您正在实例化MyServiceImpl

代码语言:javascript
复制
return new MyServiceImpl();

所以Spring不能自动生成这个类中的任何东西。

这与您的多模块项目无关。

要么使用自动装配,要么必须在配置方法中设置服务类上的DAO。

票数 0
EN

Stack Overflow用户

发布于 2018-09-14 21:07:20

如果您想要扫描单个bean而不启用整个包的组件扫描,您可以使用:

代码语言:javascript
复制
@Import(MyServiceImpl.class)

然后,这个特定的bean将启用spring,并扫描适当的spring注释。

更新:正如其他人在创建服务时指出的那样

代码语言:javascript
复制
return new MyServiceImpl();

这种类型的创建将禁用MyServiceImpl的自动装配功能。这样做的原因是,一旦您自己调用了构造函数,Spring就不再参与bean及其依赖项的创建。

我通过@Import声明向您指出的机制假定您尚未从projectA启用对projectB的组件扫描。在这种情况下,如果我们假设BeanConfig驻留在projectA中。然后你需要确保两件事:

1.您在projectB中的存储库应该使用@Repository注释,因为您的MyServiceImpl应该使用@Service2注释。在类级别的BeanConfig中,您应该放置以下定义:

代码语言:javascript
复制
@Configuration
@Import({MyServiceImpl.class, MyDao.class})
public class BeanConfig {


}

由于MyServiceImpl和MyDao使用服务和存储库进行了注释,因此您将不再需要使用@Bean方法myBean进行注释。

为了让projectB中的@Repository注释工作,您需要在projectA上启用Repositories。确保通过EnableJpaRepositories启用它,方法是从包含此注释的projectB导入相关类,或者在projectA中注释Config类。

票数 0
EN

Stack Overflow用户

发布于 2018-09-14 21:11:23

如果您的spring boot应用程序结构正确,那么您不应该指定一个基础包来获取您的配置。Spring boot应该自然地扫描包含您的配置的包并相应地注册您的bean。

参考:https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-structuring-your-code.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52331686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档