如何取得Spring管理的bean
来源:互联网 发布:罗俊中山大学知乎 编辑:程序博客网 时间:2024/05/17 16:02
本文截转自http://elf8848.iteye.com/blog/875830
十七、如何取得Spring管理的bean(请用第3种方法)
1、servlet方式加载时,
【web.xml】
<servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:/springMVC.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet>
spring容器放在ServletContext中的key是org.springframework.web.servlet.FrameworkServlet.CONTEXT.springMVC
注意后面的springMVC,是你的servlet-name配置的值,注意适时修改。
ServletContext sc=略WebApplicationContext attr = (WebApplicationContext)sc.getAttribute("org.springframework.web.servlet.FrameworkServlet.CONTEXT.springMVC");
2、listener方式加载时:
【web.xml】
<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext</param-value></context-param><listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
【jsp/servlet】可以这样取得
ServletContext context = getServletContext();WebApplicationContext applicationContext = WebApplicationContextUtils .getWebApplicationContext(context);
3、通用的方法来了,神器啊,前的 1、2两种方法并不通用,可以抛弃了。
在配置文件中加入:
<!-- 用于持有ApplicationContext,可以使用SpringContextHolder.getBean('xxxx')的静态方法得到spring bean对象 --><bean class="com.xxxxx.SpringContextHolder" lazy-init="false" />
import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;/** * 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext. * */public class SpringContextHolder implements ApplicationContextAware {private static ApplicationContext applicationContext;/*** 实现ApplicationContextAware接口的context注入函数, 将其存入静态变量.*/public void setApplicationContext(ApplicationContext applicationContext) {SpringContextHolder.applicationContext = applicationContext; // NOSONAR}/*** 取得存储在静态变量中的ApplicationContext.*/public static ApplicationContext getApplicationContext() {checkApplicationContext();return applicationContext;}/*** 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.*/@SuppressWarnings("unchecked")public static <T> T getBean(String name) {checkApplicationContext();return (T) applicationContext.getBean(name);}/*** 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.*/@SuppressWarnings("unchecked")public static <T> T getBean(Class<T> clazz) {checkApplicationContext();return (T) applicationContext.getBeansOfType(clazz);}/*** 清除applicationContext静态变量.*/public static void cleanApplicationContext() {applicationContext = null;}private static void checkApplicationContext() {if (applicationContext == null) {throw new IllegalStateException("applicaitonContext未注入,请在applicationContext.xml中定义SpringContextHolder");}}}
0 0
- 如何取得Spring管理的bean
- 如何取得Spring管理的bean
- 如何取得Spring管理的bean
- 如何取得Spring管理的bean
- 如何取得Spring管理的bean
- 如何取得Spring管理的bean
- 如何取得Spring管理的bean
- Struts的Acion中如何取得Spring管理的bean
- 如何取得Spring管理的bean (请用第3种方法)
- 如何取得Spring管理的bean (请用第3种方法):
- 在JSP里调用spring管理的bean取得数据
- Spring如何实现管理Bean的。
- spring的bean管理
- Spring的bean管理
- spring的bean管理
- Spring Bean的管理
- Spring是如何管理Bean
- Spring是如何管理Bean
- 一个很强大的下拉刷新控件
- 安卓四大组件
- SOLID原则
- java读取文件——字符流输入和输出
- 预处理过滤代码中的不需要的代码并且保留注释
- 如何取得Spring管理的bean
- 客户端主机限制
- IOS 第三方管理库管理 CocoaPods
- bootstrap3中Select树的实现
- Mysql常用操作
- Android流媒体技术 Silk编解码
- isatty(STDIN_FILENO)详解
- Can't connect to local MySQL server through socket '/tmp/mysql.sock'
- 学习总结