项目用到了ApplicationContextAware,通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法。
我们在ApplicationContextAware的实现类中,就可以通过这个上下文环境对象得到Spring容器中的Bean。
使用方法如下:
1.实现ApplicationContextAware接口:
- package com.bis.majian.practice.module.spring.util;
- import org.springframework.beans.BeansException;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.ApplicationContextAware;
- public class SpringContextHelper implements ApplicationContextAware {
- private static ApplicationContext context = null;
- @Override
- public void setApplicationContext(ApplicationContext applicationContext)
- throws BeansException {
- this.context = applicationContext;
- }
- public static Object getBean(String name){
- return context.getBean(name);
- }
- }
2.在Spring的配置文件中配置这个类,Spring容器会在加载完Spring容器后把上下文对象调用这个对象中的setApplicationContext方法:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-autowire="byName">
- <bean id="springContextHelper" class="com.bis.majian.practice.module.spring.util.SpringContextHelper"></bean>
- <context:component-scan base-package="com.bis.majian.practice.module.*" />
- </beans>
3.在web项目中的web.xml中配置加载Spring容器的Listener:
- <!-- 初始化Spring容器,让Spring容器随Web应用的启动而自动启动 -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
4.在项目中即可通过这个SpringContextHelper调用getBean()方法得到Spring容器中的对象了。
相关推荐
本文将深入探讨几种常见的获取Spring容器的方法,包括使用`ApplicationContext`、通过`ServletContext`、利用`ApplicationObjectSupport`、`WebApplicationObjectSupport`以及实现`ApplicationContextAware`接口等。...
### SpringPython使用介绍指南 #### 一、IoC容器 SpringPython借鉴了Spring框架的核心理念——依赖注入(DI)和面向切面编程(AOP),并将其应用到了Python语言中。其中,IoC(Inverse of Control,控制反转)容器...
`ApplicationContextAware`是其中的一个典型接口,当我们想要在非托管类(即非Spring Bean)中获取Spring容器中的其他Bean时,可以使用这个接口。 `ApplicationContextAware`接口提供了`setApplicationContext`方法...
如果你知道Bean的类型,可以使用`getBean(Class<T> requiredType)`方法,Spring会返回与给定类型匹配的第一个Bean。 ```java ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); ...
Spring Boot普通类调用bean【从零开始学Spring Boot】”旨在指导初学者如何在非Spring管理的类中访问和使用Spring容器中的bean。下面将详细讲解这个主题。 首先,了解Spring Boot的基础概念是必要的。Spring Boot...
3. **实现ApplicationContextAware**:为了在`Timer`中使用Spring管理的Bean,我们需要实现`ApplicationContextAware`接口,以便获取Spring上下文。 ```java @Component public class TimerConfig implements ...
2. **AOP(面向切面编程)**:通过Spring AOP,可以在特定的切点(如方法调用)执行拦截器逻辑,此时可以使用`@Autowired`获取所需的bean。创建一个切面,定义切点并实现所需逻辑,确保在多线程环境中正确处理bean。...
实现方法的主要思想是使用spring框架提供的ApplicationContextAware接口来获取spring容器中的对象。这个接口提供了获取ApplicationContext对象的方法,从而可以使用ApplicationContext对象来获取spring容器中的对象...
com-spring-ioc-demo:源码主要是学习Spring IOC的原理,以及对Bean的注册及控制,主要运用以下类对Spring进行扩展学习:BeanPostProcessor,BeanFactoryAware,BeanNameAware,ApplicationContextAware,FactoryBean...
- **通过实例工厂方法创建 Bean**:使用非静态工厂方法来创建 Bean 实例。 - **Bean的标识**:每个 Bean 都有一个唯一的标识符(id 或 name)。 - **Singleton 的使用与否**:默认情况下,Bean 采用 Singleton ...
从Spring 3.0开始,推荐使用Java配置类中的@Bean注解来指定初始化方法。 4. 销毁(Destruction) 销毁阶段发生在Spring容器关闭或Bean不再需要时。销毁之前会调用实现了DisposableBean接口的destroy方法或通过XML...
2. **线程安全性**:如果在多线程环境中使用`ApplicationContextUtil.getBean`方法,需要注意并发问题,因为该方法不是线程安全的。 3. **性能考虑**:频繁地通过编码的方式获取Bean可能会对性能造成一定影响,尤其...
总的来说,获取非Spring管理组件中的SpringBean主要有两种方式:一是通过实现`ApplicationContextAware`接口并存储ApplicationContext,二是使用注解和静态内部类来注入BeanFactory。这两种方法都是Spring框架提供的...
- **Groovy Bean Definition DSL**:Spring支持使用Groovy语言编写配置脚本来定义bean,这种方式更加灵活且易于维护。 - **1.2.2 实例化容器** 实例化IoC容器是使用Spring框架的第一步。可以通过`...
方法五:实现接口 ApplicationContextAware 实现该接口的 setApplicationContext(ApplicationContext context) 方法,并保存 ApplicationContext 对象。Spring 初始化时,会通过该方法将 ApplicationContext 对象...
- 介绍了几种实例化bean的方法,如使用构造方法、静态工厂方法和实例工厂方法。 **4.4 依赖** - **4.4.1 依赖注入** - 包括了基于构造方法和基于setter方法的依赖注入。 - 介绍了依赖注入的过程和示例。 - **...
使用容器意味着创建应用对象、配置它们、组装它们,并将它们交给Spring容器,然后由容器管理它们的生命周期。 1.3 Bean概述 Bean是Spring IoC容器中的核心概念,它是一个由Spring IoC容器创建、配置、管理的Java...
但是,由于静态方法无法直接使用注解,我们可以创建一个非静态的辅助类,该类可以被Spring管理,并在其内部使用`@Autowired`注解来注入bean。之后,静态服务类通过这个辅助类访问bean。 ```java @Component ...
- **默认初始化和销毁方法**:Spring提供了一些默认的初始化和销毁方法。 - **ApplicationContextAware和BeanNameAware** - `ApplicationContextAware`接口让Bean能够访问到整个ApplicationContext。 - `...
ApplicationContextAware接口扩展了BeanFactoryAware,提供了`setApplicationContext(ApplicationContext applicationContext)`方法。ApplicationContext比BeanFactory更加强大,提供了更多功能,如消息资源处理、...