type
status
date
slug
summary
tags
category
icon
password
原生spring如何实现依赖注入,singleton,prototype
依赖注入:比如A类里面引用了B类,spring使用了@Autowaired和@Resource注解,那么底层是如何实现的,singleton是返回单例的,prototype是返回多例的,底层是如何实现的。
代码

image-20230218203241917
测试
可以看到,通过@Component注解注入的对象是单例的。

image-20230218203316324
单例和多例
@Scope(value = “prototype”)表示以多实例的形式返回bean

image-20230218204358231
依赖注入
思考
思考1:是如何使用一个注解就可以返回多个对象的。
思考2:如何使用@Resource或者@Autowired是完成依赖注入的。
后置处理器
之前用过,可以指定执行init方法或者destory方法
AOP
之前的代码不再贴
1) AOP 底层是基于 BeanPostProcessor 机制的.
2) 即在 Bean 创建好后,根据是否需要 AOP 处理,决定返回代理对象,还是原生 Bean
3) 在返回代理对象时,就可以根据要代理的类和方法来返回
4) 其实这个机制并不难,本质就是在 BeanPostProcessor 机制 + 动态代理技术
5) 下面我们就准备自己来实现 AOP 机制, 这样小伙伴们就不在觉得 AOP 神秘,通透很多
了
代理对象
为什么他返回了代理对象,这个过程是如何实现的?
因为他被标识为切面类包括了,@Before,@After这些。

image-20230218215205123
下一步实现整个流程

image-20230218215708247

image-20230218215804809