使用注释@SpringBootApplication进行配置

时间:2015-11-09 22:29:21

标签: java spring gradle spring-boot

我遇到Spring Boot配置问题。

我使用https://start.spring.io/

创建了基本的Spring Boot项目

我遇到问题,配置仅适用于子目录中的类:

enter image description here

我已经尝试过注释 @ComponentScan ,但它没有帮助。

你知道我该怎么办?

5 个答案:

答案 0 :(得分:47)

Spring Boot documentation for @SpringBootApplication

  

许多Spring Boot开发人员总是对其主类进行注释   使用@Configuration@EnableAutoConfiguration@ComponentScan。   由于这些注释经常被一起使用(特别是如果   你遵循上面的最佳实践),Spring Boot提供了一个   方便的@SpringBootApplication替代方案。

     

@SpringBootApplication注释等同于使用   @Configuration@EnableAutoConfiguration@ComponentScan与他们合作   默认属性:[...]

@ComponentScan javadoc状态

  

如果未定义特定包,则会从中进行扫描   声明此批注的类的包。

也就是说,只扫描与ReadingListApplication位于同一个包中的类型。

如果您需要自定义配置,请根据需要提供自己的@Configuration@EnableAutoConfiguration@ComponentScan

答案 1 :(得分:13)

设置Spring boot项目时,请准备一个Application类(在基础包中包含@SpringBootApplication注释的类。

@SpringBootApplication所做的一件事是组件扫描。但是,它只扫描子包。即如果你将该类放在 com.mypackage 中,那么它将扫描子包中的所有类,即com.mypackage。*。

如果您不想这样做,您还可以将@ComponentScan添加到指定根包的类中,即@ComponentScan("com.mypackage")

我建议你有一个基本软件包,即 com.mypackage 。在这些包中,有你的子包。您是否在该基础包中包含@SpringBootApplication

答案 2 :(得分:7)

检查Spring文档:

http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/SpringBootApplication.html

您可以使用@SpringBootApplication覆盖组件扫描的默认值。您只需将其作为参数包含在内:

@SpringBootApplication(scanBasePackages = "entertainment")

或String数组:

@SpringBootApplication(scanBasePackages = {"entertainment", "readinglist"})

答案 3 :(得分:1)

我遇到了同样的问题,为了解决这个问题,我重命名了这样的软件包。

  

“com.project”

你可以放置你的SpringBootAplication主类,然后创建以“com.project”开头的其他包

  

“com.project.dao”

     

“com.project.controller”

创建这个子项目结构你不需要在@SpringBootApplication注释中使用scanBasePackages,这样你的主类就能找到你项目中的每个组件。

如果您选择使用scanBasePackages,请记住您需要像这样设置所有组件包

  

@SpringBootApplication(scanBasePackages = {“com.project.dao”,   “com.project.controller”})

答案 4 :(得分:0)

要使包裹扫描真正生效,您必须执行以下操作。

@SpringBootApplication(scanBasePackages = {"com.your.package.test.*.*"})

第一个星号告诉您扫描主路径( com.your.package.test )中的所有软件包,第二个星号告诉您扫描每个软件包中的所有文件。

例如:

com.your.package.test
|_ config
|_ business
|_ controller
|_ domain
|_ repository