读书人

自个儿实现的Spring父类注入

发布时间: 2012-09-01 09:33:03 作者: rapoo

自己实现的Spring父类注入

在开发过程如果使用全注解方式,难免会遇到一个类继承至某个父类,而这个父类的属性需要注入。

?

如果使用XML可以直接在XML配置文件中使用属性setter进行注入父类属性。

?

但是如果使用的是全注解,这个问题会比较棘手。

?

方法1:

自己在工程项目中写一个类继承至该父类A,而不要直接继承该父类A。原因是该父类A可能是另外的jar包中的类,该类A可能没有被annotation修饰,无法完成注入,而你自己写的继承至该类的子类B可以在项目中使用annotation进行属性注入(要复写父类的setter方法,然后使用annotation注解),然后项目中其它类C可以继承至类B,完成父类属性的注入

?

这种方法的可以解决父类注入的问题,但是要自己写一个父类实现一个中间的桥接。

?

方法2:

实现两级注入,所谓的两级注入即是首先依赖spring自身的注入逻辑完成子类主要属性的注入,而父类的某些属性注入依赖自己实现的BeanPostProcessor完成二级注入。

?

我目前实现的方法:

?

主要实现一个BeanPostProcessor:

?使用到了几个自定义注解:

ParentInject:

?
public class TestMain {/** * @param args */public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("test-context.xml");Sub sub = ctx.getBean(Sub.class);System.out.println(sub.getName());}}

输出:

PostConstruct:test
test
hello2

表明父类注入成功。

?当然这种方式可以有多种变形,其主要意思和方法1是差不多的。

读书人网 >编程

热点推荐