IOC/DI是Spring里非常重要的概念,本文简单记录一下自己模拟的IOC/DI实现原理,这里实例化Bean使用了JDK动态代理,相当于模拟了一部分Aop的概念。
1、创建接口
业务开发大部分时候都是基于接口,这样做方便以后扩展,这里定义了一个Ai接口类:
1 | public interface Ai { |
该接口中只有一个hello方法需要实现。
2、接口实现类
接口实现类添加@ServiceMode注解,这里为了不使用Spring依赖找了一个java自带的注解模拟@Service注解
1 | import javax.xml.ws.ServiceMode; |
3、代理类
添加通用代理类,使用JDK动态代理,添加before和after输出(对应切面操作)
1 | import java.lang.reflect.InvocationHandler; |
4、模拟初始化及注入、调用
将这四个类放在同一个包下,启动main方法,执行过程如下:
- 自动扫描包下的类
- 将定义了@ServiceMode的类初始化并注册取beans容器里
- 将使用@Resource注解标注变量注入beans容器里的实例
- 调用方法
1 | import javax.annotation.Resource; |
具体的实现代码里都有注释,看一下执行的输出:
1 | package dir :/C:/Users/admin/IdeaProjects/test/target/test-classes/test/ |
本文作者:
ixx
本文链接: http://blog.jisuye.com/2019/05/07/simulation_ioc_di/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: http://blog.jisuye.com/2019/05/07/simulation_ioc_di/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!