Ani*_*eth 5 java spring maven spring-boot
在使用 spring boot 和 maven 将我们的项目模块化为不同的独立 maven 项目时,我们遇到了一个问题,即多模块 maven 项目中的 bean 自动装配不起作用。
只是为了给你一个问题的概述,以下是迄今为止开发的独立maven项目
下面是依赖结构 RewardsApp-> Rewards -> DBservices1 -> Coreservices
问题是@Autowired
在 Rewards 和 DBservices1 中使用的注释来获取用@Service
/注释的映射服务@Repository
在RewardsApp
Project中不可用。
作为一种解决方法,我们RewardsApp
使用@Bean
注释配置了 bean ,然后服务器可以使用这些服务以成功启动。使用这种方法,我们需要手动配置RewardsApp
依赖项目中使用的所有 bean 。我们的应用程序中有许多服务和存储库,我们认为创建这样的 bean 不是一种正确的方式,因为需要创建许多 bean。
请注意,我们已经在 package 下的所有项目中创建了所有 spring boot 控制器、服务、存储库 com.company.application
下面是主类的片段:
@SpringBootApplication
@ComponentScan(basePackages = {"com.company.application"})
public class RewardsApp extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(RewardsApp.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(RewardsApp.class);
}
}
/**
*Manual beans in RewardsApp
**/
@Bean
public SomeService someService()
{
return new SomeService();
}
Run Code Online (Sandbox Code Playgroud)
Ani*_*eth 15
通过在 RewardsApp.java 中添加以下注释对我有用,现在自动装配适用于罐子内的类
@ComponentScan(basePackages = {"com.company"})
@EntityScan(basePackages = {"com.company"})
@EnableJpaRepositories(basePackages = {"com.company"})
Run Code Online (Sandbox Code Playgroud)
我猜上面是服务,实体(域),存储库
为每个模块设置一个配置类(带有相关的 comp 扫描)并将这些配置导入到您的应用程序类中怎么样?
@SpringBootApplication
@ComponentScan(...)
@Import({RewardsContext.class, DBservicesContext.class})
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5622 次 |
最近记录: |