springboot加载顺序及原理?

网友投稿 164 2024-01-21


springboot启动流程

SpringBoot的启动主要是通过实例化SpringApplication来启动的。

当我们运行SpringApplication的main方法时,调用静态方法run()首先是实例化,SpringApplication初始化的时候主要做主要做三件事:根据classpath下是否存在(ConfigurableWebApplicationContext)判断是否要启动一个webapplicationContext。

启动:每个SpringBoot程序都有一个主入口,也就是main方法,main里面调用SpringApplication.run()启动整个spring-boot程序,该方法所在类需要使用@SpringBootApplication注解。

spring boot启动流程分为两部分 一部分是准备阶段,一部分是运行阶段 准备阶段主要有这么几步:配置bean的源,就是bean的来源,就是注解了SpringBootApplication的那个类。

springboot配置文件总结

以下两种方式是将该配置文件打包在jar包里面了,即便只改一个端口号,开发人员先改配置文件,再打包,再运行。此处也记录下,并解开jar包,看下该配置文件被打包后,放置的位置。

使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。

SpringBoot有几种读取配置的方式?以下两种方式是将该配置文件打包在jar包里面了,即便只改一个端口号,开发人员先改配置文件,再打包,再运行。此处也记录下,并解开jar包,看下该配置文件被打包后,放置的位置。

Component和@Configuration的效果一样,只是@Configuration在springboot中有表明是配置对象的意思 总结:日后在使用Springboot的过程中创建单个对象用@Component注解,创建多个对象使用@Configuration注解。

springboot加载properties和yml配置文件的顺序

1、在看到spring.factories中,配置加载器顺序是先执行PropertiesPropertySourceLoader再到YamlPropertySourceLoader。

2、idea中,为了我们本地方便开发测试,我们在此处创建一个config目录,然后把application.properties放进去,项目正常运行。jar包会自动生成在target目录下。

3、Spring Boot系统启动时默认会读取的配置文件,支持properties\yml格式。也就是说,会先加载 application.properties ,根据 spring.profile.active 的设置加载相应的 application-XX.properties 配置,然后按优先级合并配置文件。

4、application.yml中:server.port=8888。问题:springboot是否都加载这两个配置文件?如果两个文件有相同的key,取哪一个文件的value?都加载,且按properties→yml的顺序加载。

SpringBoot启动原理分析

初始化initialize方法执行完之后,会调用run方法,开始启动SpringBoot。首先遍历执行所有通过SpringFactoriesLoader,在当前classpath下的META-INF/spring.factories中查找所有可用的SpringApplicationRunListeners并实例化。

springBoot的启动可以分为两个部分,第一部分:SpringApplication的实例化;第二部分:调用该实例运行run方法(springboot初始化)。

配置 spring.factories ,通过该配置,才能让springboot来自动加载我们的Configuration类。具体原理我们稍后深入了解。具体的,是在模块的 resources/META-INF 目录下,新建 spring.factories 文件。

SpringBoot的启动主要是通过实例化SpringApplication来启动的。

JQuery等;在浏览器的数据传输格式上采用Json,非xml,同时提供RESTfulAPI;SpringMVC框架用于数据到达服务器后处理请求;到数据访问层主要有Hibernate、MyBatis、JPA等持久层框架;数据库常用MySQL;开发工具推荐IntelliJIDEA。

原来AutomaticJobRegistrar 是个Smartlifecycle, 从Smartlifecycle的细节可以从 Springboot Smartlifecycle 来得知。它就是在所有bean都初始化结束后开始进行的一个阶段。

springboot自动配置原理

1、Spring Boot 的自动装配原理主要依赖于 Spring 框架提供的 @Configuration、@ComponentScan 和 @Conditional 等注解,配合 Spring Boot 提供的 @EnableAutoConfiguration 和 spring.factories 配置文件,来实现自动装配的功能。

2、 SpringBoot的自动装配是指:SpringBoot会自动将一些配置类的bean注册到ioc容器,我们可以在需要的地方使用@Autowired或@Resource等注解来使用它。

3、SpringBoott自动装配原理主要解决了传统spring的重量级xml配置Bean.实现了自动装配;所以,我们也常在面试中被问到SpringBoot是如何实现自动装配。

4、SpringBoot自动装配是springboot重要的功能点。Boot系列、其它框架与Boot的整合很多是基于自动装配的。

springboot加载自定义properties原理

本文接下来会介绍 ConfigurationPropertiesBindingPostProcessor 是在何时被加入到beanfactory中的,以及 @EnableConfigurationProperties 、 @ConfigurationProperties 注解的实现原理。

SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration。请点击输入图片描述 EnableAutoConfiguration的作用是利用AutoConfigurationImportSelector给容器中导入一些组件。

显然,前者支持松绑定的特性更强大,所以在实际开发中建议使用@ConfigurationProperties来读取自定义属性。

Springboot打成JAR包后读取外部配置文件自定义jar目前只能读取application.properties和application.yml吧。可以用一个简单点的方法进行监听注入,在工具包内写一个init方法,在springboot启动时初始化就可以了。

【创建module】,首先我们自定义一个starter的module,根据你的starter实现复杂度,引入相关spring组件。最基本的,我们只需引入 spring-boot-autoconfigure 模块。

且其中都含有相同的某个key,但value不同,如:application.properties中:server.port=8001,application.yml中:server.port=8888。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:将抽象类改为接口?
下一篇:android开发工具排行榜?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~