想要获取ben,就得先获取ApplicationContext或者ApplicationContext的孩子WebApplicationContext,以下是我总结的3中获取的方式:

方式❶ :使用Junit4进行测试时(环境:Junit4/Spring3.0.5)

 
  
  1. import java.util.HashMap; 
  2.  
  3. import javax.annotation.Resource; 
  4.  
  5. import org.junit.Test; 
  6. import org.springframework.test.context.ContextConfiguration; 
  7. import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; 
  8.  
  9. import com.winning.bi.dao.DiseaseDao; 
  10.  
  11. @ContextConfiguration(value="classpath:com/property/applicationContext.xml"
  12. public class GetSpringBenMethod1 extends AbstractJUnit4SpringContextTests{ 
  13.  
  14.     @Resource(name="diseaseDao"
  15.     private DiseaseDao diseaseDao; 
  16.      
  17.     @Test 
  18.     public void test(){ 
  19.         System.out.println(diseaseDao.findDiseaseCount(new HashMap<String, Object>())); 
  20.     } 
  21.      

日志:

 
  
  1. INFO  21-01 14:35:13,709 - Loading XML bean definitions from file [D:\Workspaces\MyEclipse 10\MMAP\WebRoot\WEB-INF\classes\com\property\applicationContext.xml] 
  2. INFO  21-01 14:35:17,923 - Refreshing org.springframework.context.support.GenericApplicationContext@111a775: startup date [Mon Jan 21 14:35:17 CST 2013]; root of context hierarchy 
  3. 0  

 方式❷ :使用ClassPathXmlApplicationContext

 
  
  1. package test; 
  2.  
  3. import java.util.HashMap; 
  4.  
  5. import org.junit.Test; 
  6. import org.springframework.context.ApplicationContext; 
  7. import org.springframework.context.support.ClassPathXmlApplicationContext; 
  8.  
  9. import com.winning.bi.dao.DiseaseDao; 
  10.  
  11. public class GetSpringBenMethod2{ 
  12.      
  13.     @Test 
  14.     public void test1(){ 
  15.         ApplicationContext applicationContext=new ClassPathXmlApplicationContext("com/property/applicationContext.xml"); 
  16.         //DiseaseDao diseaseDao=(DiseaseDao) applicationContext.getBean("diseaseDao"); //spring2.5写法 
  17.         DiseaseDao diseaseDao=applicationContext.getBean("diseaseDao",DiseaseDao.class); //spring3.0新特性 
  18.         System.out.println(diseaseDao.findDiseaseCount(new HashMap<String, Object>())); 
  19.     } 
  20.      

方式❸:在Servlet中获取WebApplicationContext

 
  
  1. import javax.servlet.ServletException; 
  2. import javax.servlet.http.HttpServlet; 
  3.  
  4. import org.springframework.web.context.WebApplicationContext; 
  5. import org.springframework.web.context.support.WebApplicationContextUtils; 
  6.  
  7. public class InitServlet extends HttpServlet 
  8.     @Override 
  9.     public void init() throws ServletException 
  10.     { 
  11.         WebApplicationContext webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()); 
  12.         webApplicationContext.getBean(""); 
  13.     }