今天内容:配置maven 搭建了springboot项目
约定大于配置(它默认的框架优先级比配置的要高,基本全都用它所默认的框架只有特殊需求的时候才会修改一小部分。)
IOC
Spring IOC
管理项目中java bean的生命周期
在项目运行阶段,程序中需要很多的对象来完成整体业务
springboot提供了很多注解标注类
@Controller @RestController (用于控制器,访问前台请求)
@Service (用于业务类)
@Repository (dao类 数据访问,访问数据库)
@Component (其他功能类) @Bean @Configuration
让spring管理这些类的生命周期
Spring提供了IOC的方式方便获取该对象
IOC==控制反转
容器和代码之间的控制权反转,代码中不需要明文调用
方法来获得对象,只需要声明该类需要什么类型的对象即可
DI
依赖注入DI 通过识别依赖关系注入对应的对象
Spring Bean的作用域
Spring Bean的作用域
singleton 单例模式 一个对象 默认
prototype 原型模式 每次需要都来一个新的对象
request web项目中请求作用域 每次请求都会创建一个新的对象
session 会话就是一个沟通的过程或访问整体的过程 每次会话都会创建一个新的对象。
GlobalSession 全局的 在搭建分布式或者集群时使用
springbean的生命周期
1.根据配置情况调用Bean构造方法或工厂方法实例化Bean

2.利用依赖注入完成Bean中所有属性值的配置注入

3.如果Bean实现了BeanNameAware接口,则Spring调用的Bean的SetBeanName()方法传入当前Bean的id值

4.如果Bean实现了BeanFactoryAware接口,则Spring调用setBeanFactory()方法传入当前工厂实例的引用

5.当一个Bean实现了ApplicationContextAware接口并在Spring容器中被实例化时,Spring容器会自动调用该Bean的setApplicationContext方法,并将应用程序上下文ApplicationContext作为参数传递进来

6.BeanPostProcessor 是 Spring 框架中的一个重要接口,它允许开发者在 Spring 容器创建和初始化 bean 的过程中,对 bean 进行自定义处理。这包括在 bean 实例化之后、属性设置之前(postProcessBeforeInitialization 方法),以及在 bean 初始化之后(postProcessAfterInitialization 方法)执行自定义逻辑
Spring 容器在创建和初始化每一个 bean 时,都会调用 CustomBeanPostProcessor 中的这两个方法,允许你进行自定义处理

7.InitializingBean 是 Spring 框架中的一个接口,它定义了一个 afterPropertiesSet 方法。当 Spring 容器创建 bean 的所有属性都被设置完成后,会调用这个方法。

8.如果在配置文件中通过 init-method 属性指定了初始化方法,则调用该初始化方法。


9.如果 BeanPostProcessor 和 Bean 关联,则 Spring 将调用该接口的初始化方法 postProcessAfterInitialization()。此时,Bean 已经可以被应用系统使用了。
10.如果在 <bean> 中指定了该 Bean 的作用范围为 scope="singleton",则将该 Bean 放入 Spring IoC 的缓存池中,将触发 Spring 对该 Bean 的生命周期管理;如果在 <bean> 中指定了该 Bean 的作用范围为 scope="prototype",则将该 Bean 交给调用者,调用者管理该 Bean 的生命周期,Spring 不再管理该 Bean。
11.如果 Bean 实现了 DisposableBean 接口,则 Spring 会调用 destory() 方法将 Spring 中的 Bean 销毁;如果在配置文件中通过 destory-method 属性指定了 Bean 的销毁方法,则 Spring 将调用该方法对 Bean 进行销毁。
