- 方式一:实现
ApplicationContextAware
接口
同时还要把实现该接口的bean放入spring容器中
/*applicationContext.xml*/
<bean class="com.tortuousroad.framework.base.context.SpringApplicationContext"/>
spring会自动监测实现了ApplicationContextAware
的类,
并注入ApplicationContext
public class SpringApplicationContext implements ApplicationContextAware{
public SpringApplicationContext() {
System.out.println("context constructor");
}
/**
* !此bean一定要手动放入容器中!
*/
private static ApplicationContext context;
public static <T> T getBean(String beanId){
return (T)context.getBean(beanId);
}
public static <T> T getBean(Class<T> clazz){
return context.getBean(clazz);
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringApplicationContext.context=applicationContext;
}
}
- 方式二
public class SpringBeanFactory {
public static Object getBean(String[] paths, String name){
XmlWebApplicationContext ctx = new XmlWebApplicationContext();
ctx.setConfigLocations(paths);
ctx.setServletContext(new MockServletContext(""));
ctx.refresh();
return ctx.getBean(name);
}
public static Object getBean(String name){
String[] paths = { "applicationContext.xml" };
return getBean(paths,name);
}
}