基本介绍
为了更好的管理有继承关系或者相互依赖的bean的自动装配,spring提供了基于泛型依赖的注入机制。当我们的继承关系非常复杂的时候,泛型依赖注入会体现出很大的优越性。
说明
下面就是泛型依赖注入的大致关系图
所有的Dao类都继承BaseDao,而Service则是继承BaseService,通过指定泛型,实现自动注入
基本使用
第一步,创建BaseDao和BaseService。注意:使用泛型依赖注入只能使用@Autowired
@Repository
public abstract class BaseDao<T> {
}
public abstract class BaseService<T> {
@Autowired
public BaseDao<T> baseDao;
@Override
public String toString() {
return "Dao:"+baseDao+"\tService:"+this.getClass();
}
}
第二步,创建User类和Manager类
public class User {
}
public class Manager {
}
第三步,创建UserDao和ManagerDao继承BaseDao,指定泛型
@Repository
public class UserDao extends BaseDao<User> {
}
@Repository
public class ManagerDao extends BaseDao<Manager> {
}
第四步,创建UserService和ManagerService继承BaseService,指定泛型
@Service
public class UserService extends BaseService<User> {
}
@Service
public class ManagerService extends BaseService<Manager> {
}
创建测试方法,获取service
@Test
public void t1(){
ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");
UserService userService = ioc.getBean(UserService.class);
ManagerService managerService = ioc.getBean(ManagerService.class);
System.out.println(userService);
System.out.println(managerService);
}
输出如下,成功实现了泛型依赖注入
总结
泛型依赖注入就是为了更好的管理多个有继承关系关系之间的bean,利用泛型依赖注入可以对代码进行精简,将重复性的代码全部放到一个基类中,方便以后的修改和维护。