【Spring】简述@Configuration配置类注册BeanDefinition到Spring容...
1、Spring在古老版本会用xml实现bean的注册,在新版本也可以使用@Service、@Repository、@Controller等基于@Component的注解注入bean。
2、进入 AnnotationConfiguUtils#registerAnnotationConfigProcessors 方法 以上在创建Spring上下文对象的时候注册了一个非常核心的处理器 ConfigurationClassPostProcessor 该类会处理带有@Configuration注解的类。
3、[@Configuration + @Bean]Configuration用来声明一个配置类,然后使用 @Bean 注解,用于声明一个bean,将其加入到Spring容器中。
4、在SpringBoot框架中,通常使用@Configuration注解定义一个配置类,SpringBoot会自动扫描和识别配置类,从而替换传统Spring框架中的XML配置文件。
5、(1)类级别的注解:如@Component、@Repository、@Controller、@Service以及JavaEE6的@ManagedBean和@Named注解,都是添加在类上面的类级别注解。
Spring容器初始化过程中的九次后置处理器的回调
这个方法是一个模板方法,规定了容器实例化的步骤。其中BF初始化完成后,会调用BF的后置处理器对BF进行后置处理。
我目前的理解是Spring容器的初始化过程就是一个根据配置文件的描述创建bean,并且管理维护bean之间关系的这么一个过程。
spring的bean工厂后置处理器的回调时期是在bean实例化之前,把我们的spring配置文件解析完成之后,把bean工厂初始化之后,调用bean工厂后置处理器之后才调用bean的创建过程。我们可以对bean的定义进行修改。
容器级别的后置处理器,其内部仅声明了一个方法。Spring会根据声明的顺序对后置处理器进行调用,而BeanFactoryPostProcessor会在容器初始化期间将容器本身交由接口实现类去处理。获取到了容器,就可以做很多定制化的操作了。
springboot的简单理解
1、springboot帮我们做的两件事,一个是通过starter引入我们需要的框架,starter负责引入自己的依赖;另一个是通过autoconfigure生效一些默认的配置,简化我们的使用,这一步是通过spring.factories中定义的配置类实现的。
2、第一步:启动一个新的Spring Boot项目 利用启动.spring.io创建一个“网络”项目。在“依赖项”对话框中搜索并添加“web”依赖项,如屏幕截图所示。点击“生成”按钮,下载zip,然后将其解压缩到计算机上的文件夹中。
3、它可以省去之前繁琐的编辑配置文件的过程,采用 大量的默认配置 来简化开发过程。
4、将Spring Boot视为可以自动为我们完成这些初始任务的工具,确保团队可以快速开始解决实际业务问题而不是花时间在初始配置和设置。
spring的后置处理器
Spring提供了两种后处理bean的扩展接口,分别为 BeanPostProcessor 和 BeanFactoryPostProcessor,两者在使用上是有所区别的。 工厂初始化(BeanFactory)— Bean对象。
容器级别的后置处理器,其内部仅声明了一个方法。Spring会根据声明的顺序对后置处理器进行调用,而BeanFactoryPostProcessor会在容器初始化期间将容器本身交由接口实现类去处理。获取到了容器,就可以做很多定制化的操作了。
我们都知道Spring容器的初始化是一个相当复杂的过程,在这个过程中有很多工作是依靠Spring中的后置处理器(BeanPostProcessor)完成的,那么在这里打找找这过程中的九次后置处理器回调的地方。
spring的bean工厂后置处理器的回调时期是在bean实例化之前,把我们的spring配置文件解析完成之后,把bean工厂初始化之后,调用bean工厂后置处理器之后才调用bean的创建过程。我们可以对bean的定义进行修改。
Bean的后置处理器,首先来说,他是Spring中抽象出来的一个顶级的接口,他里面有如下两个方法。
实现的基本实现原理就是后置处理器:BeanPostProcessor 机制,实现动态化植入机制。bean 在初始化的时候会进行调用对应的 BeanPostProcessor 的对应的方法会进行织入。