首页 > BeanDefinition BeanFactory AOP
头像
社交牛逼一号
发布于 2021-09-23 09:11
+ 关注

BeanDefinition BeanFactory AOP

BeanDefinition

1 表示Bean定义,SPring根据BeanDefinition来创建Bean对象

beanClass:表示bean的类型,创建Bean的过程中会根据属性来实例的得到对象

scope:表示一个bean的作用域,scope等于singleton,该Bnean就是一个单例Bean

isLazy:表示一个bean是不是需要懒加载,原型bean的isLazy属性不起作用,懒加载的单例Bean,会在第一次getBean的时候生成该bean,非懒加载的单例bean,则会在SPring启动的过程中直接生成.

dependsOn:表示一个bean在创建之前所以来的其他bean,在一个bean创建之前,他所依赖的这些bean得先全部创建好    

primary:表示一个bean是主bean,在Spring中一个类型可以有多个bean对象,在进行依赖注入时,如果根据类型找到了多个bean,此时会判断这些bean中是否存在一个主bean,如果存在,则直接将这个bean注入给属性

initMethodName:表示一个bean得初始化方法,一个bean得生命周期过程中有一个步骤交初始化,Spring会在这个步骤中取调用bean得初始化方法,初始化逻辑有程序员自己控制。

BeanFactory

spring容器 Bean工厂用来创建Bean,顾名思义,它可以用来创建Bean,获取Bean,BeanFactory时Spring中得核心组件

方法:

        1 Object getObject() 返回得是Bean对象

        2 boolean isSingleton() 返回得是否是单例对象

        3 Class getObjectType() 返回得是Bean对象得类型

工作流程:BeanFactory利用BeanDefinition来生成Bean对象,BeanDefinition相当于BeanFactory得原材料,Bean就相当于BeanFactory所生产出来得产品。

DefaultListableBeanFactory的功能

支持单例Bean,支持Bean别名,支持父子BeanFactory,支持BEan类型转化,支持Bean后置处理,支持FactoryBean,自动装配等...

BeanDefinitionBean定义—》构造方法推断选出一个构造方法—》实例化构造方法反射得到对象—》属性填充自动填充—》初始化,赋值,校验—》初始化后AOP,生成代理对象

@Resource时java提供得注解

@Autowired是Spring所提供得注解

ApplicationContext 是比BeanFactory更加强的Spring容器,它既可以创建Bean 获取Bean,还支持国际化,时间广播,获取资源等...

BeanPostProcessor 是一种扩展机制,可以利用该机制对Bean进行定制加工。Bean后置处理器

AOP

面向切面编程,可以在无需修改业务代码得前提下,对某个或某些业务增加同一种功能,比如日志记录,权限控制,事务管理等,能很好得使得代码解耦,提高效率。

核心概念:

Advice:可以理解为通知建议,在Spring中通过定义Advice来定义代理逻辑.

Pointcut:切点,表示Advice对应得代理逻辑应用在那个类,那个方法上。

Advisor:Advisor等于Advice+Pointcut 表示代理逻辑和切点得一个整体,程序员可以通过定义或封装一个Advisor,来定义切点和代理逻辑

Weaving:表示织入,将Advice代理逻辑在代理逻辑在源码级别嵌入到切点得过程,就叫做织入

Target:Taget 表示目标对象,也就是被代理对象,在AOP生成得代理对象会持有目标对象

Join Point:连接点,方法得执行点

1 Spring生成bean对象时,先实例化出来一个对象,也就是target对象,

2 对Target对象进行属性填充

3 在初始化后步骤中,会判断target对象有没有对应得切面

4 如果有切面,就表示当前target对象需要进行AOP

5 通过Cglib或JDK动态代理机制生成一个代理对象,作为最终得bean对象

6 代理对象中有一个target属性指向了target对象

全部评论

(0) 回帖
加载中...
话题 回帖