Spring基礎—— 泛型依賴注入

1、爲了更加快捷的開發,爲了更少的配置,特別是針對 Web 環境的開發,從 Spring 4.0 以後,Spring 引入了 泛型依賴注入。java

2、泛型依賴注入:子類之間的依賴關係由其父類泛型以及父類之間的依賴關係來肯定,父類的泛型必須爲同一類型。spring

通俗一點來講:兩個子類之間的依賴關係不須要在子類中去聲明,而是在父類中進行了聲明,而依賴的紐帶就是 泛型類型,必須是相同的父類泛型類型才具備依賴關係。ide

3、UML 類圖:spa

說明:在 BaseService 中經過 @Autowired 註解自動裝配了 BaseDao 的實例。而在 UserService 中並無注入 UserDao 的實例,可是經過父類的泛型類型,3d

在 UserService 中已經注入了 UserDao 的實例。Department 與之相似。code

4、例子:blog

/**
 * @author solverpeng
 * @create 2016-07-20-9:18
 */
public class BaseDao<T> {
    public void say() {
        System.out.println("com.nucsoft.spring.Dao.BaseDao.say");
    }
}
BaseDao.java
/**
 * @author solverpeng
 * @create 2016-07-20-9:18
 */
public class BaseService<T> {
    @Autowired
    public BaseDao baseDao;

    public void service() {
        System.out.println(baseDao);
        baseDao.say();
    }
}
BaseService.java
/**
 * @author solverpeng
 * @create 2016-07-20-9:18
 */
@Repository
public class UserDao extends BaseDao<User>{}
UserDao.java
/**
 * @author solverpeng
 * @create 2016-07-20-9:18
 */
@Service
public class UserService extends BaseService<User>{}
UserService.java
@Test
public void test03() {
    UserService userService = ctx.getBean(UserService.class);
    userService.service();
}
Test.java

控制檯輸出:開發

com.nucsoft.spring.Dao.UserDao@162a657e
com.nucsoft.spring.Dao.BaseDao.sayget

相關文章
相關標籤/搜索