方法1:
继承ApplicationObjectSupport类,然后调用继承的方法手动获取:
ConfigurableApplicationContext context = (ConfigurableApplicationContext) getApplicationContext();
//动态添加新的bean
接下来就可以做想做的事了
方法2:
实现ApplicationContextAware接口,重写setApplicationContext方法,Spring会创建bean时自动注入
完整案例
@Controller
@RequestMapping("/test")
public class SessionTestController implements ApplicationContextAware {
private ExcelCache prevCache;
private ApplicationContext applicationContext;
@RequestMapping("/testsessionscope")
public @ResponseBody
JSONObject testSessionScope(){
JSONObject res = new JSONObject();
ExcelCache excelCache = getExcelCache();
//do something
return res;
}
private ExcelCache getExcelCache() {
return (ExcelCache) applicationContext.getBean("excelCache");
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}
分享到:
相关推荐
Spring AOP(面向切面编程)是Spring框架中的一个重要组件,它允许我们在不修改源代码的情况下,对程序的行为进行统一的管理和控制。...掌握这些知识点,对于提升Spring应用的开发效率和质量具有重要意义。
总的来说,获取Spring Security 3.1中所有已登录用户的信息需要理解框架的内部机制,特别是`SessionRegistry`的使用。通过正确配置`applicationContext-security.xml`并编写适当的Java代码,我们可以实现这一目标,...
第三种方法是将Struts的Action管理完全委托给Spring框架。这意味着Spring负责创建和管理Action实例,而Struts仅负责调度。这种方式通常涉及自定义Struts的Plug-In,通过Spring的ApplicationContext获取Action实例。...
本文将探讨两种在Spring Boot中实现Controller间调用的方法及其优缺点。 首先,我们可以使用`RestTemplate`来模拟远程调用。这是一种常见的HTTP客户端工具,允许Controller A通过HTTP请求访问Controller B。以下是...
在上述代码片段中,可以看到一个典型的Servlet处理方法,它展示了如何在Spring应用中使用IoC容器。`doPost`方法从HTTP请求中获取参数,并调用`transferService`进行转账操作。这里虽然没有直接涉及到Spring的IoC,...
Spring AOP模块为Spring应用中的对象提供了面向切面的编程实现。它使得开发者能够定义方法拦截器和切点,从而可以将通用功能(如日志和事务管理)模块化。 67、解释JDBC抽象和DAO模块。 Spring的JDBC抽象和DAO模块...
Spring 提供了两种 IOC 容器实现方式:BeanFactory 和 ApplicationContext。 1. BeanFactory BeanFactory 是 IOC 容器的基本实现,是 Spring 内部使用的接口,不提供开发人员使用。加载配置文件时不会创建对象,在...
然后,我们可以通过ApplicationContext获取任何需要的bean,包括静态方法内部。 ```java public class StaticService implements ApplicationContextAware { private static ApplicationContext context; @...
Spring 提供了两种主要的 IOC 实现方式:基于 XML 的配置和基于注解的配置。在 XML 配置中,我们会在一个或多个 XML 文件中定义 Bean 及它们的依赖关系。例如: ```xml ``` 在上面的例子中,`exampleBean` 的...
在`PersonProxy`类中,`before()`和`after()`就是两种不同类型的的通知。 4. **织入(Weaving)**:织入是将切面应用到目标对象来创建新的代理对象的过程。Spring支持三种织入方式:编译时织入、类加载时织入和运行...
在Spring框架的XML配置中,`<context-param>`和`<init-param>`是两种不同的参数配置元素,它们各自有着特定的用途。理解这两者的区别对于深入掌握Spring的应用上下文(ApplicationContext)初始化至关重要。 首先,...
Spring Core中的ApplicationContext接口是Spring应用的核心,它是Bean工厂的升级版,除了管理Bean之外,还提供了资源加载、消息解析、事件发布等功能。ApplicationContext可以通过XML、Java配置或注解来初始化,如:...
Java反射和Spring IOC是Java开发中的两个重要概念,它们在构建灵活、可扩展的应用程序时起着关键作用。本文将深入探讨这两个主题,并提供相关的学习资源。 首先,让我们了解一下Java反射。Java反射机制是Java语言的...
这个容器主要包括BeanFactory和ApplicationContext两种类型。ApplicationContext是BeanFactory的子类,它提供了更多的功能,如支持国际化消息等。 二、Spring容器的基本应用 描述了如何将Bean组件交给Spring容器...
Bean是Spring容器管理的对象,配置Bean主要有两种方式: 1. **XML配置**:在`applicationContext.xml`文件中,通过`<bean>`标签定义Bean。例如: ```xml <!-- 属性注入 --> <property name="prop2"><ref ...
Spring提供了两种现成的代理类,用于处理Filter或Servlet的代理,分别是`org.springframework.security.util.FilterToBeanProxy`和`org.springframework.web.filter.DelegatingFilterProxy`。这些代理类负责从...
6. 测试和调用:最后,我们可以通过Spring的ApplicationContext获取到DAO实例,然后调用其方法进行数据库操作。这样,整个流程就将Spring的控制反转和事务管理能力与Hibernate的ORM功能融合在一起。 整合Spring和...
#### 五、Spring应用的创建 1. **获取Spring JAR文件**:可以通过Maven或Gradle等方式下载Spring的库文件。 2. **理解Spring的打包结构**:Spring的库文件通常被打包成不同的模块,每个模块负责不同的功能。 3. **...