程序员の奇妙冒险

返回
Spring Boot Spring Boot
2017-06-22 15:16 阅读:51 评论:0

spring boot项目依赖spring mvc项目注入失败问题

maven使用不同框架搭建的不同项目 项目1:spring boot搭建的war项目(这是maven的聚合项目) 项目2:spring mvc搭建的jar项目(这也是maven的聚合项目,核心项目) war项目将jar项目依赖进来 项目是spring boot配置 @SpringBootApplic...

                    <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mobile/css/edit_views_html-db03dd5f8c.min.css">
                    <p>maven使用不同框架搭建的不同项目</p> 

项目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的我,问题得到解决了

评论 (0)
暂无评论 来抢沙发吧~