java – SpringBoot ComponentScan与多模块项目有关

编程之家收集整理的这篇文章主要介绍了java – SpringBoot ComponentScan与多模块项目有关编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个myapp父pom类型maven项目与myapp-core和myapp-web模块. myapp-core模块作为依赖项添加到myapp-web.

myapp-core模块中的所有类都位于root包com.myapp.core中,myapp-web模块中的所有类都位于root包com.myapp.web中

主要的Application.java也在com.myapp.web包中.由于我的核心模块根包不同,我包括ComponentScan的公共基本包“com.myapp”,如下所示:

@Configuration
@ComponentScan(basePackages="com.myapp")
@EnableAutoConfiguration
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }   
}

现在令人惊讶的是,如果我使用Run As运行此应用程序 – > Spring Boot App它工作正常.但如果我将其作为Run As运行 – > Java应用程序失败,错误地说它找不到myapp-core模块中定义的bean.

如果我将我的Application.java移动到com.myapp包,它工作正常.
它应该工作,即使我也将其作为Java应用程序运行,对吧?

最佳答案
在为spring启用调试日志级别并浏览大量日志之后,我发现扫描各种组件(如JPA存储库,JPA实体等)取决于Application.java的软件包名称.

如果JPA存储库或实体不在Application.java包的子包中,那么我们需要明确指定它们,如下所示:

@Configuration
@ComponentScan(basePackages="com.sivalabs.jcart")
@EnableAutoConfiguration
@EnableJpaRepositories(basePackages="com.sivalabs.jcart")
@EntityScan(basePackages="com.sivalabs.jcart")
public class Application{

    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

使用上面的附加@EnableJpaRepositories,@ EntityScan我可以使用Run As运行它 – > Java应用程序.

但仍不确定Run As时的工作正常 – > Spring Boot App !!

无论如何,我认为最好将我的Application.java移动到com.myapp包而不是与SpringBoot打架!

总结

以上是编程之家为你收集整理的java – SpringBoot ComponentScan与多模块项目有关全部内容。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给好友。

SpringBoot-versio:2.1.9-RELEASE由于新版本的SpringBoot已经弃用了(1.5版本支持)如下,这种方式,提供了新的 配置方案。这个是官方的介绍Handling Multipart File UploadsSpring Boot embraces the Servlet 3javax.servlet.http.PartAPI to support uploading files. By default, Spring Boo...
原文链接:http://blog.sina.com.cn/s/blog_6d3c1ec601017q4l.html下列参数一般都和@RequestMapping配合使用。 A、@CookieValueorg.springframework.web.bind.annotation.CookieValuepublic @interface CookieValueAnnotation which ind...
springboot项目集成了spring security,对于跨域访问发起的options请求,会返回403,原因是security默认不允许options请求,需要做以下修改:第一种方式:忽略options请求 web.ignoring().antMatchers(HttpMethod.OPTIONS, "/**");第二种方式:允许options请求 http.antMatchers(HttpMethod.OPTIONS, "/**").permitAll();...
原文链接:https://mp.weixin.qq.com/s/xK0fOKRYrkNFR6s_bRP56Q Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享原创: sang 牧码小子 2017-06-10小伙伴们好久不见!最近略忙,博客写的有点少,嗯,要加把劲。OK,今天给大家带来一个JavaWeb中常用的架构搭建,即Nginx+T...
@ConfigurationProperties 和 @Value 都是 Spring 提供的用于从配置文件注入配置信息的方式。很显然,@Value 比较适用于配置比较少的场景,而 @ConfigurationProperties 则更适用于有很多配置的情况。之前写项目的时候从来都没有使用过 @ConfigurationProperties 几乎每次都是使用 @Value。这次遇到了一个比较适合它的场景,在使用的时候还真遇到了一些令人讨厌的小问题,导致开发速度受到了一定的影响。这里记录下来他们之间的使用方式
问:这个问题困扰了我好久,一直疑问这个接口的bean是怎么注入进去的?因为只看到使用@Service注入了实现类serviceImpl,使用时怎么却获取的接口,而且还能调用到实现类的方法,难道这个接口是在什么时候自动注入了进去,且和实现类关联上了?接口public interface TestService { public String test();}实现类impl@Servicepublic class TestServiceImpl imple...
事物注解方式: @Transactional当标于类前时, 标示类中所有方法都进行事物处理,例子:1 @Transactional public class TestServiceBean implements TestService {}当类中某些方法不需要事物时: 1 @Transactional 2 public class TestServiceBean ...
共同点: 都是接口区别: BeanFactory以Factory结尾,表示它是一个工厂类,用于管理Bean的一个工厂 在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。 但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工...