SpringBoot框架介绍
Springboot的启动
@EnableAutoConfiguration开启自动装配,帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot,并创建对应配置类的Bean,并把该Bean实体交给IoC容器进行管理。@ComponentScan("com.packagename.controller")根据定义的扫描路径,将符合规则的类加载到spring容器中,比如在类中加入了以下注解 @Controller、@Service、@Mapper 、@Component、@Configuration 等等;@SpringBootApplication标注这是一个springboot的应用,被标注的类是一个主程序,SpringApplication.run(App.class, args);传入的类App.class必须是被@SpringBootApplication标注的类。
框架启动流程
四个主要阶段:
初始化:实例化SpringApplication并确定应用类型。
环境准备:加载配置、确定profiles。
上下文创建与刷新:加载、初始化Beans,启动内嵌服务器。
运行到关闭:执行应用逻辑,直到关闭上下文。

Spring Boot的启动流程可以大致分为以下几个阶段:
实例化SpringApplication:
根据你的应用类型(Web应用、非Web应用)决定哪种ApplicationContext类型应该被使用(例如:AnnotationConfigServletWebServerApplicationContext、AnnotationConfigApplicationContext等)。
初始化应用的监听器和默认属性。
运行SpringApplication:
触发所有的
SpringApplicationRunListener,例如EventPublishingRunListener,这些监听器主要用于发布启动过程中的各种事件。准备环境:这里会确定激活哪些profiles,并将环境属性加载到Spring Environment中。
创建ApplicationContext:根据前面的决策,实例化相应的ApplicationContext。
准备上下文:注册BeanPostProcessor、初始化上下文中的单例等,并加载源属性到上下文中。
刷新上下文:核心阶段,触发bean的定义、创建和初始化。此阶段会处理@Configuration类,并开始自动配置。
启动内嵌的Web服务器(如果是Web应用):例如Tomcat、Jetty或Undertow。
完成启动:此时,所有的Bean都已经被加载和初始化,应用已经准备好处理请求了。
运行应用:
如果你的应用实现了
CommandLineRunner或ApplicationRunner,这些Runner会在此阶段被调用。
关闭Spring Boot应用:
如果是Web应用,通常会保持运行状态直到接收到关闭信号。
非Web应用,一旦主线程完成,上下文会关闭,并触发
@PreDestroy方法。
Bean 的注入
当 Spring Boot 启动时,ComponentScan 的启用意味着会根据指定的路径范围,扫描所有定义的 Bean。 
框架设计模式
在Spring Boot中,广泛使用了许多设计模式来帮助实现其核心功能。以下是其中一些被广泛使用的设计模式:
单例模式:在Spring中,bean默认是单例的。这意味着Spring容器中每个bean的默认实例只有一个,这样可以节省资源并提高性能。
工厂模式:Spring使用这个模式来创建bean。当你请求一个bean时,Spring会使用bean的定义来创建一个实例。
代理模式:Spring AOP(面向切面编程)就是基于代理模式的。例如,当你使用Spring的事务管理时,Spring会创建一个代理来围绕你的方法执行,以便可以在方法执行前后添加额外的行为。
模板方法模式:Spring JDBC和Spring Boot的JdbcTemplate都是使用了模板方法模式。这个模式定义了一个操作中的骨架,而将一些步骤延迟到子类中。例如,JdbcTemplate处理所有常见的JDBC连接问题,而你只需要提供SQL和可能的参数。
观察者模式:Spring事件处理就是使用的观察者模式。你可以发布事件,然后有多个监听器监听和响应这些事件。
装饰器模式:Spring中用于多层缓存的CacheManager就使用了装饰器模式。
策略模式:Spring Resource接口及其实现是策略模式的一种应用,该模式允许在运行时动态地更改应用的行为。
最后更新于
这有帮助吗?