ApplicationContext ctx = new ClassPathXmlApplicationContext("config.xml");
Quest quest = (Quest) ctx.getBean("quest");
配置了 `ContextLoaderListener`,容器隨 Tomcat 啟動初始化。測試類中如何獲取 Bean?
// 在 Servlet、Filter、Listener、Controller 中
WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(servletContext);
Quest quest = wac.getBean("quest", Quest.class);
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
Quest quest = wac.getBean("quest", Quest.class);
T getBean(String name, Class type) {
return context.getBean(name, type);
}
}
// 任意處調用
Quest quest = BeanAccessor.getBean("quest", Quest.class);
若是**單元測試**,不要依賴 Web 容器,應獨立加載上下文:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class QuestTest {
@Autowired
private Quest quest;
@Test
public void test() { ... }
}