介绍
所谓的依赖注入本质就是控制反转,就像是本来我要什么我就去拿什么,主角是我,是我控制自己去拿我需要的工具,现在为了避免高耦合控制发生反转,我需要什么就有人帮我送过来,从此过上衣来伸手饭来张口的生活
思路
1,首先通过对项目类的class文件进行扫描,构建bean仓库
2,调用及注入,当类被调用时及进行注入
3,通过拦截自定义的注入标签,获取需要注入的类的信息,在bean仓库中,获取需要注入的类的信息,进行实例化后注入所需类
实现
1首先写一个需要作为拦截的注入标签类似spring的 @Autowired
@Target({ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Injection {
public String name() default "";
}
2,当请求发生时,进行所需依赖的注入
//通过类名反射实例化对应的请求类
Class c = Class.forName(className);
//对类进行实例化
Object class1=c.newInstance();