一、介绍SpringBoot自动装配原理?
1、开启@EnableAutoConfiguration
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface Enable
2、引导AutoConfigurationImportSelector
3、加载 /META-INF/spring.factories
5、执行 *AutoConfiguration
自动装配是配置文件里spring.factories的配置类;智能装配是指丰富的Condition条件表达注解,自动配置顺序注解:@AutoConfigureAfter等
6、具体流程如下图:
二、SpringBoot启动的事件机制?
1、如何创建SpringApplication?
(1)SpringApplication.run 隐式创建
(2)SpringApplicationBuilder.build() 流式创建
(3)构造方法直接创建: new SpringApplication()
2、SpringApplication 构造方法执行详解
3、SpringAplication.run 方法详解
(1)SpringApplicationRunListener
(2)ApplicationListener
(3)ApplicationContectInitializer
三、SpringBoot外部配置的加载顺序?
1、配置方式:属性文件、YAML文件
2、配置位置:类路径resource目录下、jar包的当前目录下、环境变量、命令行
四、SpringBoot和Spring MVC开发开发Java web 工程的优势?
1、修改pom.xml配置spring starter依赖
2、创建XXXApplication 作为入口类,main方法启动
3、分析web.xml 并迁移配置(字符集编码过滤器、dispatchServlet等),这些配置都已经被SpringBoot自动装配改变了
4、优化db层配置
5、优化mvc配置(视图view配置、)
6、packaging选择jar包还是war包?devtools
五、SpringBoot的可运行jar包与普通第三方jar包的区别?
1、jar包体积上,内嵌Tomcat需要 spirng-boot-maven-plugin插件的repackage操作,把所有包打进去,体积较大;
而war包只需要把项目代码打包,十几K
2、可运行jar包里结构: