maven使用不同框架搭建的不同项目
项目1:spring boot搭建的war项目(这是maven的聚合项目)
项目2:spring mvc搭建的jar项目(这也是maven的聚合项目,核心项目)
war项目将jar项目依赖进来
项目是spring boot配置
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
如果执行这个程序来启动war项目,那么你在war项目中注入核心项目的类就会报注入失败
是因为核心项目是使用maven搭建的jar类型 项目,最终会被打包成jar包,当启动项目后spring boot并没有将核心项目中的类注入到spring容器中,
因此启动项目后会报注入失败。
解决方案很简单,只要在Appliction这个类中加上扫描注解即可
@SpringBootApplication
@ComponentScan(basePackages = {"com"})
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
其中@ComponentScan(basePackages={"com"})指定扫描的包,
war项目我的包定义格式为com.xx.xx
核心项目包的定义格式也是com.xx.xx
所以注解扫描的包都扫描到这两个项目中的相关注解
加上注解后,刚接触spring boot的我,问题得到解决了