Spring 的上下文Context对象获取

本文介绍了如何在Servlet和JSP环境中使用Spring容器获取上下文及Bean实例,并提供了基于AbstractTransactionalJUnit4SpringContextTests的单元测试样例。

使用Spring容器的代码依赖一个上下文对象,用户代码通过这个上下文对象来获取自己定义的Bean。

 

 

servlet中获取上下文和得到bean
WebApplicationContext context = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext())
Bisiness biz = (Bisiness) context.getBean("biz");

 

 

JSP中获取上下文和得到bean
WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(application);
Bisiness biz = (Bisiness) context.getBean("biz");

 

基于AbstractTransactionalJUnit4SpringContextTests的单元测试类:
这个类是Spring框架中的类,其中封装了对上下文的操作,由@ContextConfiguration注解来定义配置文件

### Spring框架中上下文对象ApplicationContext)的作用及使用方法 Spring框架中的`ApplicationContext`是Spring容器的一种高级接口,用于维护Bean定义以及对象之间的协作关系[^4]。它不仅是一个容器,还提供了许多附加功能,例如国际化支持、事件传播机制和资源加载等。 #### 1. ApplicationContext的作用 `ApplicationContext`的主要作用包括: - **Bean管理**:负责创建、配置和管理Bean的生命周期。 - **依赖注入**:通过构造函数、Setter方法或字段注入实现Bean之间的依赖关系。 - **事件传播**:支持事件监听器机制,允许开发者在特定事件发生时执行自定义逻辑。 - **国际化支持**:提供对多语言环境的支持,便于开发国际化应用程序。 - **资源加载**:能够加载文件、URL或其他类型的资源。 #### 2. 使用方法 以下是几种常见的获取和使用`ApplicationContext`的方法: - **通过抽象类`ApplicationObjectSupport`获取** 抽象类`ApplicationObjectSupport`提供了一个`getApplicationContext()`方法,可以方便地获取`ApplicationContext`实例。Spring初始化时,会通过`setApplicationContext(ApplicationContext context)`方法将`ApplicationContext`对象注入到该类中[^1]。 - **通过实现`ApplicationContextAware`接口** 开发者可以通过实现`ApplicationContextAware`接口并重写`setApplicationContext(ApplicationContext applicationContext)`方法来获取`ApplicationContext`实例。例如: ```java import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; public class MyBean implements ApplicationContextAware { private ApplicationContext applicationContext; @Override public void setApplicationContext(ApplicationContext applicationContext) { this.applicationContext = applicationContext; } public void doSomething() { // 使用applicationContext进行操作 } } ``` - **通过主类手动创建** 在Java程序中,可以通过`ClassPathXmlApplicationContext`或`AnnotationConfigApplicationContext`等类手动创建`ApplicationContext`实例。例如: ```java import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainApp { public static void main(String[] args) { ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); // 使用context获取Bean实例 MyBean myBean = (MyBean) context.getBean("myBean"); myBean.doSomething(); context.close(); } } ``` - **通过Web应用配置** 在Web应用中,`WebApplicationContext`是`ApplicationContext`的子接口,通常由`ContextLoaderListener`或`DispatcherServlet`自动创建并初始化。`web.xml`文件中的`contextConfigLocation`参数会被设置到Spring应用上下文中[^2]。 #### 3. 示例代码 以下是一个简单的示例,展示如何通过`ClassPathXmlApplicationContext`创建`ApplicationContext`并获取Bean: ```java import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class EventExample { public static void main(String[] args) { // 创建ApplicationContext实例 ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); // 获取Bean实例 MyBean myBean = (MyBean) context.getBean("myBean"); // 调用Bean方法 myBean.doSomething(); // 关闭应用上下文 context.close(); } } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值