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();
          ?}
          主站蜘蛛池模板: 翼城县| 颍上县| 虹口区| 江山市| 钟山县| 玉龙| 环江| 西青区| 阜城县| 江源县| 盘山县| 屏东市| 凤翔县| 长沙市| 婺源县| 巴马| 兴安县| 扎赉特旗| 永春县| 察雅县| 阜城县| 云南省| 镇巴县| 乳源| 金坛市| 商城县| 吴堡县| 和硕县| 集贤县| 随州市| 铜梁县| 四川省| 广南县| 申扎县| 资兴市| 渭南市| 兖州市| 禹城市| 屏边| 黔西县| 监利县|