Springboot配置
分析springboot的启动类:研究下 @SpringBootApplication 注解
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class,args); } }
@SpringBootApplication 源码: 红框中的是重点注解

1.@SpringBootConfiguration

在这个注解上面,又有一个@Configuration注解
这个注解的作用就是声明当前类是一个配置类
然后Spring会自动扫描到添加了@Configuration的类
读取其中的配置信息
而@SpringBootConfiguration是来声明当前类是SpringBoot应用的配置类,项目中只能有一个。所以一般我们无需自己添加。
2.@EnableAutoConfiguration
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import({AutoConfigurationImportSelector.class}) public @interface EnableAutoConfiguration { String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration"; Class<?>[] exclude() default {}; String[] excludeName() default {}; }
开启自动配置
告诉SpringBoot基于所添加的依赖,去“猜测”你想要如何配置Spring。
比如我们引入了spring-boot-starter-web,而这个启动器中帮我们添加了tomcat、SpringMVC的依赖
此时自动配置就知道你是要开发一个web应用,所以就帮你完成了web及SpringMVC的默认配置了!
SpringBoot内部对大量的第三方库或Spring内部库进行了默认配置
这些配置是否生效,取决于我们是否引入了对应库所需的依赖
如果有那么默认配置就会生效
我们使用SpringBoot构建一个项目,只需要引入所需框架的依赖,配置就可以交给SpringBoot处理了
3.@ComponentScan
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) @Documented @Repeatable(ComponentScans.class) public @interface ComponentScan { ... }
配置组件扫描的指令
提供了类似与<context:component-scan>标签的作用
通过basePackageClasses或者basePackages属性来指定要扫描的包。
如果没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及子包
而我们的@SpringBootApplication注解声明的类就是main函数所在的启动类,
因此扫描的包是该类所在包及其子包。因此,一般启动类会放在一个比较前的包目录中。
浙公网安备 33010602011771号