我有一个Resource
注释@RestController
的课程,但仅在使用App
注释的主要课程@SpringBootApplication
位于顶级包中时使用。
使用:
com
+- test
+- project
+- App.java
|
+- resources
| +- Resource.java
不起作用:
com
+- test
+- project
+- app
| +- App.java
|
+- resources
| +- Resource.java
答案 0 :(得分:4)
我假设您使用的是@SpringBootApplication
注释。您应该知道它等同于使用@Configuration,@ EnableAutoConfiguration和@ComponentScan。
ComponentScan 配置要使用的组件扫描指令 @Configuration类。提供与Spring XML并行的支持 元件。
basePackageClasses(),basePackages()或其别名值()之一可以 指定用于定义要扫描的特定包。 如果具体包装 未定义扫描将从类的包中发生 这个注释。
您使用默认设置,因此您的扫描将在包含注释的类包中进行。
您可以像以前那样移动它,也可以在@ComponentScan中指定basePackages。
答案 1 :(得分:2)
在documentation中你可以发现建议将主类保持在所有其他类之上,以避免使用basePackage
我们通常建议您将主应用程序类放在其他类之上的根包中。
@EnableAutoConfiguration
注释通常放在主类上,它隐含地为某些项定义了基础“搜索包”。
...
使用根包还允许使用@ComponentScan
注释,而无需指定basePackage
属性。如果主类位于根包中,也可以使用@SpringBootApplication
注释。