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();
          ?}
          主站蜘蛛池模板: 成都市| 金溪县| 察哈| 巨鹿县| 丰宁| 岳阳县| 绥芬河市| 定襄县| 宜兰市| 永泰县| 纳雍县| 简阳市| 谢通门县| 榆社县| 托克逊县| 剑川县| 盐池县| 吉木乃县| 江达县| 舞阳县| 枣阳市| 长汀县| 闵行区| 西丰县| 青河县| 孟津县| 金塔县| 浦县| 宁武县| 来凤县| 广南县| 奎屯市| 广元市| 星座| 黔南| 义乌市| 淮北市| 夹江县| 岳阳市| 五家渠市| 鸡东县|