`

编程方式 获取ApplicationContext实例

阅读更多

       基于Spring的Java应用会通过ApplicationContext接口提供应用程序配置。我们常常需要在代码中获取当前的ApplicationContext。如在集成测试时,需要通过ApplicationContext获取各种Bean。这时可以使用FileSystemXmlApplicationContext通过提供配置文件的路径,来得到应用程序上下文:

String[] paths ={"applicationContext.xml",...};
ApplicationContext ctx =new FileSystemXmlApplicationContext(paths);
SomeBean bean =(SomeBean) ctx.getBean("someBean");

       在实际生产中,往往会根据不同的客户情况部署不同的配置,所以配置文件不能写死在代码中。这时应该通过HttpServlet来获取应用程序上下文。比如,我们可以定义一个ApplicationContextWrapper类,提供全局的ApplicationContext

public class ApplicationContextWrapper{
private static ApplicationContext applicationContext;
public synchronized static void 
       setApplicationContext(ApplicationContext context){ 
    applicationContext = context;
}
public static ApplicationContext current(){
   return applicationContext;
} 
public static Object getBean(String beanName){
     return applicationContext.getBean(beanName);}}

同时,要自定义一个HttpServlet,在init方法中通过传入的ServletConfigWebApplicationContextUtils来设置ApplicationContextWrapper

public class ApplicationContextLoaderServlet extends HttpServlet{
  public void init(ServletConfig config) throws ServletException{
     ApplicationContextWrapper.setApplicationContext(
     WebApplicationContextUtils.
     getWebApplicationContext(config.getServletContext()));}}

当然,不要忘了在web.xml中配置这个servlet:

<servlet>
  <servlet-name>ApplicationContextLoaderServlet</servlet-name>
  <servlet-class>
    net.kirin.sample.ApplicationContextLoaderServlet
  </servlet-class>
     <load-on-startup>1</load-on-startup>
</servlet>

这样就可以在代码中使用ApplicationContext了:

DataSource dataSource =(DataSource)ApplicationContextWrapper.getBean("dataSource");
 
 
分享到:
评论

相关推荐

    三、Spring源码分析——ApplicationContext

    ApplicationContext负责Bean的生命周期,包括初始化、实例化、依赖注入、初始化回调、销毁等阶段。它可以使用 BeanPostProcessor 接口对Bean进行预处理和后处理,实现自定义逻辑。同时,它还支持定义初始化方法和...

    day38 05-Spring的BeanFactory与ApplicationContext区别

    例如,它不支持AOP(面向切面编程)和国际化(i18n),也不包含事件传播机制,这些功能在大型应用中非常重要。 相比之下,ApplicationContext是BeanFactory的扩展,它包含了BeanFactory的所有功能,并添加了许多...

    获取spring容器的方法

    最基础的获取Spring容器的方式是直接创建`ApplicationContext`实例。通常,我们通过读取配置文件来初始化`ApplicationContext`,如: ```java ApplicationContext ac = new FileSystemXmlApplicationContext(...

    Spring官网阅读(十三)ApplicationContext详解(下)

    ApplicationContext继承自BeanFactory,并在此基础上扩展了更多的企业级服务,如国际化支持、事件发布机制、资源处理以及对AOP(面向切面编程)的支持。在Spring应用中,通常会使用ApplicationContext来替代简单的...

    Java中Spring获取bean方法小结

    - **使用`Prototype`作用域的Bean**:如果一个Bean是Prototype作用域,每次请求都会创建一个新的实例,可以通过ApplicationContext获取新实例。 6. **注意点** - 谨慎处理初始化:ApplicationContext在初始化时...

    获取Spring容器

    在某些情况下,我们可能需要通过编程的方式来获取Spring容器中的Bean。例如,在非Spring托管的代码或者需要动态获取Bean的情况下。下面详细介绍如何通过编程的方式手动获取Spring容器中的Bean。 ##### 1. 配置...

    sping applicationcontext中的一些例子demo

    在Spring框架中,`ApplicationContext`是核心容器的重要接口,它负责管理Bean...通过这些示例代码,我们可以深入理解Spring容器如何加载和管理Bean,以及如何通过编程方式与容器交互,进一步提升我们的Spring开发能力。

    springmvc+jdbc数据库实例

    JDBC(Java Database Connectivity)则是Java编程语言与各种类型的数据库进行交互的标准接口。在这个"springmvc+jdbc数据库实例"中,我们将会探讨如何在Spring MVC项目中集成JDBC来操作MySQL数据库。 首先,我们...

    几种spring获取bean的方法.txt

    一旦获取到了`ApplicationContext`,就可以调用其`getBean()`方法来获取特定名称的Bean实例。 **示例代码:** ```java import org.springframework.web.context.WebApplicationContext; import org.spring...

    Java开发学习(四)----bean的三种实例化方式.doc

    3. **编写测试程序**:创建一个主类`AppForInstanceBook`,在这个类中,我们使用`ClassPathXmlApplicationContext`加载配置文件,并通过`getBean`方法获取到`bookDao` Bean的实例。 4. **构造函数测试**:在`...

    SpringBoot 获取spring bean方式.rar

    获取Bean的方式与`ApplicationContext`类似: ```java ConfigurableListableBeanFactory factory = ((ConfigurableApplicationContext) context).getBeanFactory(); MyService myService = factory.getBean...

    面向接口编程

    在Spring教程.docx文档中,可能会详细讲解如何使用Spring进行面向接口编程,包括配置XML或使用注解的方式来声明接口的实现,以及如何通过Spring的IoC容器获取和使用接口实例。这通常会涉及`@Autowired`注解、`@...

    处理ssh组合框架中如何用getBean获取实体

    `getBean`是Spring框架提供的一个方法,位于`ApplicationContext`接口中,用于从Spring容器中获取一个已注册的bean实例。通常,bean在配置文件中定义,然后通过`getBean`来获取并使用。例如,我们可以使用以下方式...

    一个Spring的入门实例;一个Struts的入门实例

    5. **编写测试**:使用 `ApplicationContext` 加载配置,然后获取 Bean 实例进行测试。 **Struts 入门实例:** 1. **环境准备**:安装 Tomcat,配置 Struts 必要的 jar 包。 2. **创建 Action 类**:实现 `Action`...

    基于java的企业级应用开发:Spring的核心容器.ppt

    创建ApplicationContext实例有两种常见的方法: 1. 使用`ClassPathXmlApplicationContext`,它会从类路径中查找配置文件,如`"classpath:spring/applicationContext.xml"`。 2. 使用`...

    Java获取Spring中配置的Bean的三种方式

    在Java编程中,Spring框架是应用广泛的企业级开发工具,它提供了一种强大的依赖注入机制,使得开发者可以方便地管理并获取容器中的Bean。本文将详细介绍在Spring框架中获取配置Bean的三种主要方法。 1. **通过...

    将Tapestry整合到Spring里去.doc

    一种简单的做法是在Tapestry页面对应的Java类中使用Spring的静态工具类WebApplicationContextUtils获取ApplicationContext,并通过getBean()方法获取名为"userService"的Bean。然而,这种方法并不符合依赖注入的设计...

    Spring框架JavaConfig注解配置方式实例

    Spring框架是Java开发中最常用的轻量级框架之一,它的核心特性是依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)。在这个实例中,我们将探讨如何使用JavaConfig...

    Spring与Struts整合3种方式实例

    - 创建 Action 类,继承 `ActionSupport`,并使用 `getWebApplicationContext()` 获取 ApplicationContext,然后通过它来获取 Spring 管理的 Bean。 2. 通过 Spring 的 `DelegatingRequestProcessor` 类 这种方法...

    一个简单的ssh实例

    通过SessionFactory和Session接口,我们可以方便地执行SQL查询,例如获取所有用户信息,或根据用户名查找用户。此外,Hibernate的注解或XML配置文件用于定义实体类与数据库表的对应关系。 **Spring** 是一个全面的...

Global site tag (gtag.js) - Google Analytics