PC6下载站

分类分类

Spring3注释装配的实践方案

关注+2011-02-11作者:佚名

5 页 Java代码

为了解决此问题,我们实现了一个后置注入的类:SqlMapClientDaoInjector用来在DAO加载到context中后注入其依赖。类代码如下:

 Java代码
/** 
 * 类说明: 向iBatis的DAO中注入依赖<br> 
 * 创建时间: 2011-1-26 上午10:51:28<br> 
 *  
 * @author seraph<br> 
 * @email: seraph115@gmail.com<br> 
 */ 
public class SqlMapClientDaoInjector implements ApplicationContextAware, InitializingBean {  
 
    private static final Logger logger = Logger.getLogger(SqlMapClientDaoInjector.class);  
      
    @Override 
    public void setApplicationContext(ApplicationContext applicationContext)  
            throws BeansException {  
        SpringContext.setApplicationContext(applicationContext);  
    }  
 
    public void afterPropertiesSet() throws Exception {  
        Assert.notNull(dataSource, "Property 'dataSource' is required.");  
        Assert.notNull(sqlMapClient, "Property 'sqlMapClient' is required.");  
        injectDependence();  
    }  
      
    private void injectDependence() {  
                // 获取Context上下文  
        ApplicationContext ctx = SpringContext.getApplicationContext();  
                // 按类型获取上下文中的对象  
                Map<String, SqlMapClientDaoSupport> map = ctx.getBeansOfType(org.springframework.orm.ibatis.support.SqlMapClientDaoSupport.class, true, true);  
        for (Iterator<String> i = map.keySet().iterator(); i.hasNext();) {  
            try {  
                String supportName = (String) i.next();  
                SqlMapClientDaoSupport support = map.get(supportName);  
                // 后注入依赖  
                support.setSqlMapClient(sqlMapClient);  
                support.setDataSource(dataSource);  
            } catch (RuntimeException e) {  
                logger.error("SqlMapClientDaoInjector.injectDependence()", e);   
            }  
        }  
    }  
      
    public void setDataSource(DataSource dataSource) {  
        this.dataSource = dataSource;  
    }  
 
    public void setSqlMapClient(SqlMapClient sqlMapClient) {  
        this.sqlMapClient = sqlMapClient;  
    }  
      
    private DataSource dataSource;  
 
    private SqlMapClient sqlMapClient;  
 

/**
 * 类说明: 向iBatis的DAO中注入依赖<br>
 * 创建时间: 2011-1-26 上午10:51:28<br>
 *
 * @author seraph<br>
 * @email: seraph115@gmail.com<br>
 */
public class SqlMapClientDaoInjector implements ApplicationContextAware, InitializingBean {

 private static final Logger logger = Logger.getLogger(SqlMapClientDaoInjector.class);
 
 @Override
 public void setApplicationContext(ApplicationContext applicationContext)
   throws BeansException {
  SpringContext.setApplicationContext(applicationContext);
 }

 public void afterPropertiesSet() throws Exception {
  Assert.notNull(dataSource, "Property 'dataSource' is required.");
  Assert.notNull(sqlMapClient, "Property 'sqlMapClient' is required.");
  injectDependence();
 }
 
 private void injectDependence() {
                // 获取Context上下文
  ApplicationContext ctx = SpringContext.getApplicationContext();
                // 按类型获取上下文中的对象
                Map<String, SqlMapClientDaoSupport> map = ctx.getBeansOfType(org.springframework.orm.ibatis.support.SqlMapClientDaoSupport.class, true, true);
  for (Iterator<String> i = map.keySet().iterator(); i.hasNext();) {
   try {
    String supportName = (String) i.next();
    SqlMapClientDaoSupport support = map.get(supportName);
    // 后注入依赖
    support.setSqlMapClient(sqlMapClient);
    support.setDataSource(dataSource);
   } catch (RuntimeException e) {
    logger.error("SqlMapClientDaoInjector.injectDependence()", e);
     }
  }
 }
 
 public void setDataSource(DataSource dataSource) {
  this.dataSource = dataSource;
 }

 public void setSqlMapClient(SqlMapClient sqlMapClient) {
  this.sqlMapClient = sqlMapClient;
 }
 
 private DataSource dataSource;

 private SqlMapClient sqlMapClient;

}

 然后加入此类的配置即可,

展开全部

相关文章

更多+相同厂商

热门推荐

  • 最新排行
  • 最热排行
  • 评分最高
排行榜

    点击查看更多

      点击查看更多

        点击查看更多

        说两句网友评论

          我要评论...
          取消