`
xo_tobacoo
  • 浏览: 391040 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

获取spring上下文

阅读更多

问题:我们想在自己程序的任一地方获取由spring管理的bean

1)

ServletContext context = arg0.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);
yourService = (YourService)ctx.getBean("yourService");

 

2)可以实现BeanFactoryAware接口,实现BeanFactoryAware 接口的Bean类,在依赖关系设定完成后,初始化方法之前,Spring容器将会注入BeanFactory的实例,你可以通过这个 BeanFactory的实例获取其他的bean,不过这样你的bean就和spring耦合到一块了。

我们既然可以通过set来拿到我们要的对象,为什么还要用这个beanFactory呢,道理很简单,因为有些情况是需要 动态的去获取对象的,比如说我有10个银行的处理对象,他们都继承了我的BankService对象,但是具体处理的时候要哪家银行的对象呢?这个依赖于 用户的选择。你可以注入10个BankService实例,然后用if --else来搞,不过那样太坨了。每增加一家银行你都需要改代码。
通过beanFactory的话,那就一行代码搞定,只要给beanName就OK了,动点脑筋吧beanName配置的有规律点,然后根据用户的银行选择,凑出个beanName,大功告成了!

<?xmlversion="1.0"encoding="gb2312"?>
<!--指定Spring 配置文件的dtd>
<!DOCTYPE beans PUBLIC"-//SPRiNG//DTDBEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<!--Spring配置文件的根元素-->
<beans>
<!配置 BeanFactoryAwarebean-->
<bean id="chinese" class="lee.Chinese"/></beans>

 将代码中

public class BeanFactoryAnywhere implements BeanFactoryAware {
	public static  BeanFactory beanFactory;
	@Override
	public void setBeanFactory(BeanFactory arg0) throws BeansException {
		BeanFactoryAnywhere.beanFactory=arg0;

	}

}
 
分享到:
评论

相关推荐

    springmvc spring 两套上下文问题

    在Spring MVC和Spring框架的整合应用中,常常会遇到两套上下文的问题。Spring MVC是Spring框架的一个模块,主要用于处理Web请求,而Spring则提供了一个更广泛的IoC(Inversion of Control,控制反转)和AOP(Aspect ...

    利用Spring Context上下文创建自定义对象

    在Spring框架中,Spring Context上下文是核心组件之一,它为开发者提供了强大的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IoC)功能。本篇文章将深入探讨如何利用Spring ...

    通过Spring上下文获取bean的实例对象

    通过Spring上下文获取bean的实例对象

    spring

    // 获取Spring上下文 } // ... } ``` - **Spring DelegatingRequestProcessor**:这是另一个用于集成Struts和Spring的重要组件。`DelegatingRequestProcessor`作为Struts的请求处理器,可以利用Spring管理的...

    Spring笔记.doc

    监听器如 ContextLoaderListener 在项目启动时加载 Spring 配置文件并保存到 application 对象中,WebApplicationContextUtils 可以从 application 对象中获取 Spring 上下文。 【Spring 与 Hibernate 整合】 ...

    struts+spring+hibernate三大框架整合

    1. **使用Spring的ActionSupport**:Action类直接继承自Spring的ActionSupport,通过`super.getWebApplicationContext()`获取Spring上下文,然后通过`ApplicationContext.getBean()`获取bean。这种方式简单,但...

    如何获得spring上下文的方法总结

    如何获得Spring上下文的方法总结 在Spring框架中,获得上下文的方法是非常重要的,通过本文,我们将详细介绍获得Spring上下文的方法总结,并结合示例代码进行详细解释。 一、获得上下文的方法总结 在Spring框架中...

    Spring基础面试

    以上两种方式都可以从 `ServletContext` 中获取到 Spring 上下文对象。 #### 9. Spring AOP 的底层使用的是什么技术? - **知识点**: Spring AOP 主要使用 JDK 动态代理和 CGLIB 两种技术实现。 - **解释**: JDK ...

    Spring框架实用知识库分享

    * 介绍如何获取并使用Bean对象,包括获取Spring上下文对象、获取指定Bean对象、使用Bean对象 第2篇 Spring使用注解存储和读取对象 * 介绍Spring中使用注解存储和读取对象的方法 * 演示如何使用@Spring注解来创建...

    特殊情况(ActionForm,Servlet, Filter, Listener)下Spring如何注入对象

    1. **Servlet**: 可以在Servlet的init()方法中,通过ApplicationContextAware接口获取Spring上下文,然后手动从上下文中获取依赖的bean。 2. **Filter**: 同样,可以在Filter的init()方法中获取ApplicationContext...

    spring+quartz 动态任务方案

    `init` 方法则获取 Spring 上下文,并从中获取 `StartJobService` 实例,然后通过 `ExecutorService` 来执行这个服务。 ##### 3.2 StartJobService 类分析 ```java @Service public class StartJobService ...

    简单学习使用Spring+Velocity发送邮件

    // 获取Spring上下文 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); // 创建JavaMailSender实例 JavaMailSender mailSender = context.getBean(JavaMailSender....

    Spring使用timer定时器-能精确几点运行定时任务

    3. **实现ApplicationContextAware**:为了在`Timer`中使用Spring管理的Bean,我们需要实现`ApplicationContextAware`接口,以便获取Spring上下文。 ```java @Component public class TimerConfig implements ...

    线程中获取spring 注解bean

    在提交任务时,可以将bean作为参数传递,或者在任务内部使用`ApplicationContextAware`接口获取应用上下文,从而获取bean。 4. **ApplicationContextAware**:让线程处理类实现`ApplicationContextAware`接口,...

    在struts2中集成Spring共2页.pdf.zip

    4. 实现Action类:Action类可以实现Spring的`ApplicationContextAware`接口,以便在运行时获取Spring上下文,或者直接使用`@Autowired`注解注入依赖。 总的来说,Struts2和Spring的集成使得开发者能够利用Struts2的...

    详解在SpringBoot应用中获取应用上下文方法

    SpringBoot 应用中获取应用上下文方法 在 SpringBoot 应用中获取应用上下文是非常重要的一步,通过获取应用上下文,我们可以方便地获取 Bean 对象、环境变量、配置信息等。在本文中,我们将详细介绍在 SpringBoot ...

    Spring 应用上下文获取 Bean 的常用姿势实例总结

    Spring 应用上下文获取 Bean 的常用姿势实例总结 Spring 应用上下文获取 Bean 是一个常见的操作,在 Spring 框架中获取 Bean 对象是非常重要的。本文将总结 Spring 应用上下文获取 Bean 的常用姿势实例,并对其...

    spring+quartz

    - **ApplicationContextAware**:Job 实现 `ApplicationContextAware` 接口,可以在 Job 中获取 Spring 上下文,方便使用 Spring 的服务。 - **Scoped Proxy**:对于需要在 Job 中保持状态的 Bean,可以使用 ...

    Spring Live中文

    - 通过`ApplicationContext`接口获取Spring上下文,进而获取Bean实例。 **单元测试和导入context的一些技巧:** - 在单元测试中,可以使用`ApplicationContext`来加载配置文件并获取Bean实例。 - 使用`@...

    利用 Fastjson 注入 Spring 内存马,太秀了~!(csdn)————程序.pdf

    1. 获取 Spring 上下文(`WebApplicationContext`): ```java WebApplicationContext context = (WebApplicationContext) RequestContextHolder.currentRequestAttributes().getAttribute("org.springframework....

Global site tag (gtag.js) - Google Analytics