posts - 82, comments - 269, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
          如何在單元測試時,對Appfuse中POJO的屬性進行自動裝載(經過事后分析發現,不僅僅是針對POJO)
          在Appfuse中,對DAO類進行單元測試時有如下代碼
          ??? private UserDao dao = null;
          ??? private RoleDao rdao = null;
          ???
          ??? public void setUserDao(UserDao dao) {
          ??????? this.dao = dao;
          ??? }
          ???
          ??? public void setRoleDao(RoleDao rdao) {
          ??????? this.rdao = rdao;
          ??? }
          通過架構,這兩個Dao類都進行了自動裝載,后來的使用中,我才發現,所有類似的屬性都可以實現自動裝載.
          ?
          ?
          這我就奇怪了,如果這些類是在Spring的ApplicationContext中設置的,我還知道,Spring提供了很多途徑來解決自動裝載問題.但是這些單元測試的類,都是由它們來管理生成ApplicationContext的,怎么也實現了自動裝載?
          經常查看源碼,才知道原來是Appfuse架構中對DAO進行單元測試的類有一個共同的父類AbstractDependencyInjectionSpringContextTests,這個父類得到生成的ApplicationContext,會檢查自己有沒有一些屬性要實現自動裝載的,如果有就到ApplicationContext中去找,找到了就把自己子類的屬性實現自動裝載.
          ?
          最核心的代碼是:AbstractDependencyInjectionSpringContextTests中有如下方法
          ?private void injectDependencies() throws Exception {
          ? if (isPopulateProtectedVariables()) {
          ?? if (this.managedVariableNames == null) {
          ??? initManagedVariableNames();
          ?? }
          ?? populateProtectedVariables();
          ? }
          ? else if (getAutowireMode() != AUTOWIRE_NO) {
          ?? this.applicationContext.getBeanFactory().autowireBeanProperties(
          ??? this, getAutowireMode(), isDependencyCheck());
          ? }
          ?}
          ?
          ?AbstractSingleSpringContextTests類中定義了下面的方法,這個方法實現了Junit的類TestCase定義的方法,這個方法會在每個方法之前運行。
          ? ?protected final void setUp() throws Exception {
          ??this.applicationContext = getContext(contextKey());//這個contextKey方法會調用BaseDaoTestCase中定義的getConfigLocations方法
          ??prepareTestInstance();
          ??onSetUp();
          ?}
          主站蜘蛛池模板: 上饶县| 九龙县| 东丽区| 阳泉市| 岳阳市| 杂多县| 噶尔县| 萨迦县| 翁源县| 泉州市| 定襄县| 金堂县| 兴山县| 中西区| 天峨县| 含山县| 南涧| 萍乡市| 民乐县| 青田县| 包头市| 黔西县| 乌鲁木齐县| 香港 | 泾阳县| 龙口市| 弥渡县| 巴彦淖尔市| 东阿县| 罗江县| 乐山市| 连州市| 阿坝县| 宁陵县| 普格县| 翁源县| 建德市| 右玉县| 若尔盖县| 周口市| 荆州市|