spring常用注解作用与常用接口与后置处理器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring常用注解作用与常用接口与后置处理器相关的知识,希望对你有一定的参考价值。

参考技术A

从spring2.5之后,spring注解驱动开发慢慢取代了Spring的xml配置文件的作用,而且目前流行的SpringBoot开发也是基于spring注解驱动做扩展的,所以想要理解好SpringBoot,就必须掌握一些spring的注解驱动。

以前xml的做法是

现在使用spring注解的做法是

java8之后ComponentScan注册加了@Repeatable(ComponentScans.class),可以直接在配置类上标注多个@Componentscan,在java8之前想配置多个@Componentscan扫描,需要用@ComponentScans

给容器注册组件(bean)的几种方式
1.包扫描+组件标注注解(@Service、@Controller、@Repository、@Componet),这种方式用于导入自己写的类
2.@Bean方式导入,常用入导入第三方包里面的类 默认bean id为导入执行的方法名
3.@Import方式导入(有三种用法),默认的bean id为全类名
4.通过FactoryBean(工厂bean)

-bean创建->初始化->销毁

applicationContextAeare和EmbeddedValueResolverAeare都是通过ApplicationContextAwareProcessor后置处理器来实现的

BeanFactoryPostProcessor是在bean定义信息加载完成后调用
BeanDefinitionRegistryPostProcessor是在bean定义信息将要加载时调用
先执行BeanDefinitionRegistryPostProcessor的实现类再执行BeanFactoryPostProcessor的实现类

创建bean的源码位置
org.springframework.context.support.AbstractApplicationContext#finishBeanFactoryInitialization
->org.springframework.beans.factory.BeanFactory#getBean(java.lang.String, java.lang.Class<T>)
-->org.springframework.beans.factory.support.AbstractBeanFactory#createBean
--->org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean
执行bean对象的实例化
->org.springframework.beans.factory.support.AbstractBeanFactory#createBean
给bean的属性赋值
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#populateBean

initializeBean方法主要做了三个操作1.循环执行后置处理器的的前置方法(applyBeanPostProcessorsBeforeInitialization)、2.再执行初始化方法(invokeInitMethods),3.再执行后置处理器的的后置方法(applyBeanPostProcessorsAfterInitialization)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#initializeBean(java.lang.String, java.lang.Object, org.springframework.beans.factory.support.RootBeanDefinition)

以上是关于spring常用注解作用与常用接口与后置处理器的主要内容,如果未能解决你的问题,请参考以下文章

Spring之BeanPostProcessor(后置处理器)介绍

JAVA-socket.io中常用注解的作用

Spring中的后置处理器BeanPostProcessor讲解

spring框架前置增强,后置增强,和环挠增强,异常增强有什么作用

Spring点滴五:Spring中的后置处理器BeanPostProcessor讲解

spring利用后置处理器初始化bean属性