文章目录
  1. 1. DI
  2. 2. 普通类中注入DAO

Spring中的DI给程序员带来了巨大的便利,从此不再需要写无聊的setter/getter方法还有构造函数。但是有时候在Spring的项目中,偶尔我们可能需要在普通类中使用Dao或者类似被Spring管理的Resource。本文主要介绍一下这个需求的解决方案。

DI

Spring 中的依赖注入类似于如下代码:

public class PushTaskServiceImpl implements PushTaskService {
    @Autowired
    private PushTaskDao pushTaskDao;
    。。。。

上面是使用annotation的形式,也可以通过配置xml来实现。

普通类中注入DAO

  1. 普通类中注入DAO,首先要获取Spring管理的应用程序上下文,里面存储spring管理的各种bean对象。例如:

    ApplicationContext context =  new ClassPathXmlApplicationContext("META-INF/spring/appcontext-core.xml");
    pushTaskDao = (PushTaskDao) context.getBean("PushTaskDao");
        。。
    

    如果是web项目,可以通过下面代码获取应用程序上下文:

    ServletContext servletContext = this.getServletContext();  
    WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
    
  2. xml文件中配置对应的Bean

    <bean id="PushTaskDao" name="PushTaskDao" class="com.ttpod.push.dao.PushTaskDao"/>
    

除了获取应用程序上下文之外,还可以获取BeanFactory来注入Dao,例如:

BeanFactory factory = new ClassPathXmlApplicationContext("classpath:/applicationContext.xml"); 
factory.getBean("。。。。")    
文章目录
  1. 1. DI
  2. 2. 普通类中注入DAO