spring boot 核心原理

1.它是个什么东西?

它是一个服务于spring框架的框架,把原先大量的配置文件缩减成一个application.properties/application.yml,开发人员可以更加便捷的开发;它可以快速构建一个web应用,内置了tomcat,无需打包部署,直接运行;特点是“约定优于配置”。

2.什么是约定优于配置?

一般的目录结构如下:
spring boot核心原理,启动原理

a).在resoureces下存放配置文件:application.yml

spring boot核心原理,启动原理
表示当前使用的是application-dev.yml开发环境的配置文件,(.yml文件必须严重注意格式,否则报错。)
spring boot核心原理,启动原理
在配置文件中可以处理好数据库、tomcat等一系列配置,及其简便了开发人员的开发。

b).默认的打包方式为jar

spring boot核心原理,启动原理
pom文件中引入了spring-boot-starter-web,其中包含了spring-boot-starter和spring-boot-web,包含了自动配置、日志和YAML,自动帮我们引入了web模块开发需要的相关jar包;还内嵌了tomcat容器,一键启动项目。

springboot启动原理

spring boot核心原理,启动原理
@SpringBootApplication注解由三个注解组成:
@Configuration:表示是一个IoC容器的配置类;
@EnableAutoConfiguration:把所有符合条件的@Configuration配置都加载到当前项目所创建并使用的IoC容器中;
@ComponentScan:扫描当前所有加了@Component 、@Repository、@Service、@Controller的类到IoC容器中。

1.springboot的自动装配原理是什么?

spring boot核心原理,启动原理
run()方法中会执行refreshContext()方法:
spring boot核心原理,启动原理
spring boot核心原理,启动原理
内部会解析我们的配置类上的标签.实现自动装配功能的注解。
@EnableAutoConfiguration中@Import注解会引入配置类AutoConfigurationImportSelector,这个类里有个SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader());方法,会读取jar包中的/项目中的META-INF/spring.factories文件;

2.springboot的spi机制

spi机制的全称是Service Provider Interface,是为某个接口寻找实现的机制;当前项目提供了服务接口的实现之后,在jar包的META-INF/services/目录里同时创建以服务接口命名的文件。该文件里就是实现该服务接口的具体实现类。而当外部程序装配这个模块的时候,就能通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入。通过这个约定,就不需要把服务放在代码中了,通过模块被装配的时候就可以发现服务类了。

相关文章: