一:问题
在通过IDEA的Spring Initializr创建版本为2.7.0的SpringBoot项目时,它会自动将启动类XxxApplication放到一个包下面,我们可以将启动类移出三级目录。应该保证启动类在controller、service、dao的上级,否则无法扫面@Controller,@Service,@Repository等。
二:正确位置
三:@SpringBootApplication注解的理解
1. 解释
使用@SpringBootApplication标注的类是SpringBoot的主配置类。
2. 相关启动配置由以下注解帮我们完成
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
主要注解是以下三个:
1. @SpringBootConfiguration 标注在某个类上,表示该类是SpringBoot的配置类
2. @EnableAutoConfiguration 以前我们需要配置的东西,在SpringBoot启动后会帮我们自动配置
3. @ComponentScan 用于通过注解指定spring在创建容器时要扫描的包