本人最近遇到一个难题,我们在对spring webflow做了扩展后, 需要在spring context初始化完成后对我们自己的bean做一些init的初始化操作实现方法。
实现思路, 我们想借助于spring context的自己的listener的生命周期方法ContextRefreshedEvent。这个event会在spring context初始化完成之后调用。我们可以在这个方法里调用我们自己的bean的init方法。
实现细节:
自定义一个公共接口 Initilization,所有想要在spring context初始化后被调用的bean都要实现这个接口:
public interface Initilization{ //需要在spring context初始化后调用的方法 public void init(); }
自定义实现spring context 的 ApplicationListener
import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; @SuppressWarnings("rawtypes") public class PostContextInitilization implements ApplicationListener { @Autowired(required=false) List<Initilization> list; public List<Initilization> getList() { return list; } public void setList(List<Initilization> list) { this.list = list; } public void onApplicationEvent(ApplicationEvent event) { // TODO Auto-generated method stub if(list == null){ return; } if(event instanceof ContextRefreshedEvent){ for(Initilization initBean:list){ initBean.initAfterContextSetup(); } } } }
这样就可以实现spring context初始化后的处理逻辑的实现
相关推荐
我们还可以在XML配置中定义Bean的初始化方法(`init-method`)和销毁方法(`destroy-method`),Spring容器会在适当的时间调用这些方法。 9. **Spring容器的启动与Bean的生命周期**: 一旦XML配置加载到Spring...
在Spring中,Bean的生命周期包括实例化、初始化、正常服务和销毁等阶段。通常,Spring容器会在应用启动时扫描配置文件,创建并初始化所有定义的Bean。然而,通过动态加载,我们可以避免不必要的初始化,直到真正需要...
Spring Context模块是Spring框架的核心部分,它提供了一个统一的接口来管理应用对象,包括bean的创建、初始化、配置和查找。Context模块使得应用程序可以跨越不同层次和组件,实现松耦合和高可测试性。在Spring中,...
在Spring框架的XML配置中,`<context-param>`和`<init-param>`是两种不同的参数配置方式,它们各自有特定的用途和作用范围。这里我们将深入探讨这两种参数的区别,并通过实际应用来理解它们。 首先,`<context-...
Spring允许我们定义Bean的生命周期,如初始化方法和销毁方法。使用`@PostConstruct`和`@PreDestroy`注解来指定这些方法。 ```java @Service public class MyService { @PostConstruct public void init() { // ...
postProcessAfterInitialization方法,在Spring中定义的Bean初始化后调用这个方法。 三、 Spring容器加载完成后执行从spring监听器作为入口。org.springframework.web.context.ContextLoaderListener找到初始化...
在 Spring 中,可以使用 `init-method` 和 `destroy-method` 属性来指定 Bean 的初始化和销毁方法。 Bean 是 Spring 框架中的核心组件,理解 Bean 的概念、配置、实例化和生命周期是使用 Spring 框架的基础。
- **BeanFactory** 是Spring中最基础的IoC容器,负责管理和实例化Bean。它允许开发者定义Bean的生命周期和依赖关系,提供了低级别的配置选项。 - **ApplicationContext** 是BeanFactory的扩展,增加了更多面向应用...
6. **生命周期方法**:使用`@PostConstruct`和`@PreDestroy`注解来定义Bean初始化和销毁时执行的方法。 ```java @Service public class ServiceWithLifecycle { @PostConstruct public void init() { // 初始化...
5. `init-method`和`destroy-method`:指定bean初始化和销毁时要调用的方法。 6. `<import>`:引入其他配置文件,方便模块化和复用。 7. `<context:component-scan>`:通过注解扫描特定包下的类,自动发现并注册带...
6. **初始化回调**:所有bean实例化和依赖注入完成后,Spring会调用那些声明了初始化方法(init-method)的bean。这允许开发者在bean完全准备好使用之前执行自定义逻辑。 7. **事件发布**:最后,`...
在bean实例化后,Spring允许开发者定义初始化回调方法(`init-method`),这些方法会在bean初始化完成后执行。同时,Spring还提供了`BeanPostProcessor`接口,允许自定义逻辑在bean实例化和初始化之后进行干预。 ...
2. **Bean的生命周期管理**:Spring Context负责创建、初始化、管理和销毁bean。它支持各种生命周期回调方法,如`init-method`和`destroy-method`,使得开发者可以在特定阶段执行自定义逻辑。 3. **依赖注入**:这...
- 可以通过`init-method`属性指定初始化方法,如`<bean id="product" class="xxx.Product" init-method="myInit"/>`,当Bean被创建后会调用`myInit`方法。 5. **接口初始化**: - `InitializingBean`接口提供了`...
* Servlet、Filter、Interceptor 等,接口中都有 void init() 初始化方法、void destroy() 销毁方法 依赖注入 * 构造器注入 * 属性注入 p 名称空间的支持 * 引入 p 名称空间 * 使用 p 名称空间注入属性 SpEL:...
Spring的WEB模块提供了构建Web应用程序的基础架构,包括支持多部分文件上传、使用Servlet监听器初始化IoC容器以及集成Spring MVC。 70、解释Spring配置文件。 Spring配置文件是一个XML文件,它包含了应用程序中Bean...
spring的IOC: ... * 初始化 * 由spring容器调用init方法 * 在构造函数之后执行 * 销毁 * 如果是单例,则必须返回ClassPathXmlApplicationContext该容器,才能执行销毁工作 * 如果是多例,容器不负责销毁
此外,XML配置还支持许多其他特性,如`init-method`和`destroy-method`用于指定Bean的初始化和销毁方法,`scope`属性用于设置Bean的作用域(如单例、原型等),以及`<import>`元素用于导入其他配置文件。 虽然现代...
@PostConstruct 是 JSR-250 规范的一部分,用于标记在 Bean 初始化后由 Spring 容器执行的方法。这意味着该方法会在所有依赖注入完成后调用,但在此之前。例如: ```java public class UserDaoImpl extends ...
无论使用`BeanFactory`还是`ApplicationContext`,Spring默认以单例(`singleton`)模式初始化bean。这意味着在整个应用中,每个bean只有一个实例。如果需要其他作用域,如原型(`prototype`),则需要在配置中指定...