基于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
方法中通过传入的ServletConfig
和WebApplicationContextUtils
来设置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");
相关推荐
ApplicationContext负责Bean的生命周期,包括初始化、实例化、依赖注入、初始化回调、销毁等阶段。它可以使用 BeanPostProcessor 接口对Bean进行预处理和后处理,实现自定义逻辑。同时,它还支持定义初始化方法和...
例如,它不支持AOP(面向切面编程)和国际化(i18n),也不包含事件传播机制,这些功能在大型应用中非常重要。 相比之下,ApplicationContext是BeanFactory的扩展,它包含了BeanFactory的所有功能,并添加了许多...
最基础的获取Spring容器的方式是直接创建`ApplicationContext`实例。通常,我们通过读取配置文件来初始化`ApplicationContext`,如: ```java ApplicationContext ac = new FileSystemXmlApplicationContext(...
ApplicationContext继承自BeanFactory,并在此基础上扩展了更多的企业级服务,如国际化支持、事件发布机制、资源处理以及对AOP(面向切面编程)的支持。在Spring应用中,通常会使用ApplicationContext来替代简单的...
- **使用`Prototype`作用域的Bean**:如果一个Bean是Prototype作用域,每次请求都会创建一个新的实例,可以通过ApplicationContext获取新实例。 6. **注意点** - 谨慎处理初始化:ApplicationContext在初始化时...
在某些情况下,我们可能需要通过编程的方式来获取Spring容器中的Bean。例如,在非Spring托管的代码或者需要动态获取Bean的情况下。下面详细介绍如何通过编程的方式手动获取Spring容器中的Bean。 ##### 1. 配置...
在Spring框架中,`ApplicationContext`是核心容器的重要接口,它负责管理Bean...通过这些示例代码,我们可以深入理解Spring容器如何加载和管理Bean,以及如何通过编程方式与容器交互,进一步提升我们的Spring开发能力。
JDBC(Java Database Connectivity)则是Java编程语言与各种类型的数据库进行交互的标准接口。在这个"springmvc+jdbc数据库实例"中,我们将会探讨如何在Spring MVC项目中集成JDBC来操作MySQL数据库。 首先,我们...
一旦获取到了`ApplicationContext`,就可以调用其`getBean()`方法来获取特定名称的Bean实例。 **示例代码:** ```java import org.springframework.web.context.WebApplicationContext; import org.spring...
3. **编写测试程序**:创建一个主类`AppForInstanceBook`,在这个类中,我们使用`ClassPathXmlApplicationContext`加载配置文件,并通过`getBean`方法获取到`bookDao` Bean的实例。 4. **构造函数测试**:在`...
获取Bean的方式与`ApplicationContext`类似: ```java ConfigurableListableBeanFactory factory = ((ConfigurableApplicationContext) context).getBeanFactory(); MyService myService = factory.getBean...
在Spring教程.docx文档中,可能会详细讲解如何使用Spring进行面向接口编程,包括配置XML或使用注解的方式来声明接口的实现,以及如何通过Spring的IoC容器获取和使用接口实例。这通常会涉及`@Autowired`注解、`@...
`getBean`是Spring框架提供的一个方法,位于`ApplicationContext`接口中,用于从Spring容器中获取一个已注册的bean实例。通常,bean在配置文件中定义,然后通过`getBean`来获取并使用。例如,我们可以使用以下方式...
5. **编写测试**:使用 `ApplicationContext` 加载配置,然后获取 Bean 实例进行测试。 **Struts 入门实例:** 1. **环境准备**:安装 Tomcat,配置 Struts 必要的 jar 包。 2. **创建 Action 类**:实现 `Action`...
创建ApplicationContext实例有两种常见的方法: 1. 使用`ClassPathXmlApplicationContext`,它会从类路径中查找配置文件,如`"classpath:spring/applicationContext.xml"`。 2. 使用`...
在Java编程中,Spring框架是应用广泛的企业级开发工具,它提供了一种强大的依赖注入机制,使得开发者可以方便地管理并获取容器中的Bean。本文将详细介绍在Spring框架中获取配置Bean的三种主要方法。 1. **通过...
一种简单的做法是在Tapestry页面对应的Java类中使用Spring的静态工具类WebApplicationContextUtils获取ApplicationContext,并通过getBean()方法获取名为"userService"的Bean。然而,这种方法并不符合依赖注入的设计...
Spring框架是Java开发中最常用的轻量级框架之一,它的核心特性是依赖注入(Dependency Injection,简称DI)和面向切面编程(Aspect-Oriented Programming,简称AOP)。在这个实例中,我们将探讨如何使用JavaConfig...
- 创建 Action 类,继承 `ActionSupport`,并使用 `getWebApplicationContext()` 获取 ApplicationContext,然后通过它来获取 Spring 管理的 Bean。 2. 通过 Spring 的 `DelegatingRequestProcessor` 类 这种方法...
通过SessionFactory和Session接口,我们可以方便地执行SQL查询,例如获取所有用户信息,或根据用户名查找用户。此外,Hibernate的注解或XML配置文件用于定义实体类与数据库表的对应关系。 **Spring** 是一个全面的...