这些天,一直在边学习,边做东西,发现,慢慢的补上了不少知识。今天发现了一个很有用的技巧,希望能给不知道的人,一点帮助。
当在web启动后,spring已经初始化的bean,已经按照你的约束注入了。那么如何获取那些sigleton 的bean。 网上说, 可以用servlet来做,其实没有必要。
第一种方法,慢一般是300+ms,可以说是多费一道手,不过,还是记录下来,也许有点意义。
这种做法,是我第一次的方法,后来,经过猛看javaDoc,又发现了一个好东西,(希望大家以后做东西也能猛看javaDoc,按照名字去看,也许你会找到些什么,虽然多数时候是迷茫)
WebApplicationContext 应该就是spring的sevlet(也许是linstener或别的,这方面我的基本功还不够,也许说错哦)启动后加载到servletContext中的东西。你"."一下这个对象你会发现,你想获得的好多东西都出来了。而且,再速度上好过第一种方法,它的获取速度,在用
两次System.currentTimeMills()计时时,得出的结果是0ms。
希望对没有找到答案,或是正在找这个答案的人有帮助。还有,它还能获得web程序的servletContext。
当在web启动后,spring已经初始化的bean,已经按照你的约束注入了。那么如何获取那些sigleton 的bean。 网上说, 可以用servlet来做,其实没有必要。
第一种方法,慢一般是300+ms,可以说是多费一道手,不过,还是记录下来,也许有点意义。
public class SpringBeans{
private static ApplicationContext factory;
private static ServletContext sc ;
private static final String APPLICATION_CONTEXT = "\\WEB-INF\\applicationContext.xml";
private static final String DAO_CONTEXT = "\\WEB-INF\\daoHibernateContext.xml";
public static Object getBean(String beanID){
factory = getFactory();
return factory.getBean(beanID);
}
private static ApplicationContext getFactory(){
sc = MyServletContext.getServletContext();
String aAC = sc.getRealPath(APPLICATION_CONTEXT);
String aDC = sc.getRealPath(DAO_CONTEXT);
ApplicationContext tmpfactory = new FileSystemXmlApplicationContext(
new String[] { aAC , aDC});
return tmpfactory;
}
}
// 当你取得的时候可以这样用
(Object)bean = (Object)SpringBeans.getBean(beanID);
这种做法,是我第一次的方法,后来,经过猛看javaDoc,又发现了一个好东西,(希望大家以后做东西也能猛看javaDoc,按照名字去看,也许你会找到些什么,虽然多数时候是迷茫)
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
wac.getBean(beanID);
WebApplicationContext 应该就是spring的sevlet(也许是linstener或别的,这方面我的基本功还不够,也许说错哦)启动后加载到servletContext中的东西。你"."一下这个对象你会发现,你想获得的好多东西都出来了。而且,再速度上好过第一种方法,它的获取速度,在用
两次System.currentTimeMills()计时时,得出的结果是0ms。
希望对没有找到答案,或是正在找这个答案的人有帮助。还有,它还能获得web程序的servletContext。
WebApplicationContext wac..;
wac.getServletContext();

4992

被折叠的 条评论
为什么被折叠?



