http://floys1987.iteye.com/blog/372111
这些天,一直在边学习,边做东西,发现,慢慢的补上了不少知识。今天发现了一个很有用的技巧,希望能给不知道的人,一点帮助。
当在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();
分享到:
相关推荐
ServletContext读取web应用中的资源文件
org.springframework.web.context.support.ServletContextResource.class org.springframework.web.context.support.ServletContextResourceLoader.class org.springframework.web.context.support....
注意:每个servlet有一个ServletConfig,...如果修改XML来改变一个初始化参数的值,只有当Web应用重新部署时Web应用其他部分才会看到,因为servlet只会初始化一次,在初始化时会为它提供ServletConfig和ServletContext。
3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.6.1. 设置Bean使自动装配失效 3.3.7. 依赖检查 3.3.8. 方法注入 3.3.8.1. Lookup方法注入 3.3.8.2. 自定义方法的替代方案 3.4. bean的作用域 3.4.1. ...
通过将 JSF 层层包装,最终可在 Spring Framework 和 Spring Web Flow 中使用 JSF 的各种 组件。 • 与 Spring Security (原 Acegi Security )整合 只需将某个 flow 声明为“ secured ”,即可利用 Spring ...
6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...
Error creating bean with name 'org.springframework.web.servlet.handler.SimpleUrlHandlerMapping#0' defined in ServletContext resource [/WEB-INF/springMVC-servlet.xml]: Initialization of bean failed;...
从加载过程我们可以看到,首先从Servlet事件中得到ServletContext,然后可以读到配置好的在web.xml的中的各个属性值,然后ContextLoder实例化WebApplicationContext并完成其载入和初始化作为根上下文。当这个根上...
3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. 其他作用域 3.4.4. 自定义作用域 ...
6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...
3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. Prototype作用域 3.4.3. 其他作用域 3.4.4. 自定义作用域 ...
Ssh获取ServletContext 只需要更改struts-config action中的type就可以了ru :type="com.uo.spring.SpringDelegatingActionProxy" 大家有什么疑问可以直接去我的blog查看http://blog.csdn.net/chen1255/ 《[正解]Ssh...
这是servlet中ServletContext的应用实例,主要就是添加属性和读取属性。
超全面javaweb教程28天第9天_16_ServletContext获取公共的初始化参数
ServletContext与ServletConfig关系
网上的东西好大多都不能直接用,自己结合网上资料做了一个Struts2+Spring3+MyBatis3的测试工程,JUnit测试用例和WEB服务。 内涵完整jar包,解压直接可用,包括一个表文件。 Eclipse3.2+Tomcat/5.5+jdk1.5.0_17 - ...
ServletContext代码,开发工具 Myeclipse
ssm整合步骤: 第一步:mybatis单独测试 1.引入mybatis,mysql依赖 2.创建实体和dao层。... 整合的要点:就是让springmvc从servletContext中获取spring容器即可 1.在web.xml中配置spring的监听器即可。
对那些需要在启动时初始化的servlet初始化。 运行: 在这个阶段所有的servlet处于待命状态,等待客户端的请求。如果客户端的请求servlet不存在,则初始化对应的servlet。 销毁: 1.销毁所有处于运行...
Servlet生命周期,及servlet相关知识点的总结。