`
elicer
  • 浏览: 133173 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring context 初始化后bean init的场景

阅读更多

本人最近遇到一个难题,我们在对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初始化后的处理逻辑的实现

 

 

1
0
分享到:
评论
1 楼 robin_liang 2013-04-15  
实现Spring的InitializingBean接口不是可以在容器创建对象之后自动调用该接口的afterPropertiesSet()方法吗?

相关推荐

    spring bean XML配置入门

    我们还可以在XML配置中定义Bean的初始化方法(`init-method`)和销毁方法(`destroy-method`),Spring容器会在适当的时间调用这些方法。 9. **Spring容器的启动与Bean的生命周期**: 一旦XML配置加载到Spring...

    Spring動態加載Bean

    在Spring中,Bean的生命周期包括实例化、初始化、正常服务和销毁等阶段。通常,Spring容器会在应用启动时扫描配置文件,创建并初始化所有定义的Bean。然而,通过动态加载,我们可以避免不必要的初始化,直到真正需要...

    spring-context-4.2.xsd.zip

    Spring Context模块是Spring框架的核心部分,它提供了一个统一的接口来管理应用对象,包括bean的创建、初始化、配置和查找。Context模块使得应用程序可以跨越不同层次和组件,实现松耦合和高可测试性。在Spring中,...

    spring配置中<context-param> 和<init-param>的 区别

    在Spring框架的XML配置中,`&lt;context-param&gt;`和`&lt;init-param&gt;`是两种不同的参数配置方式,它们各自有特定的用途和作用范围。这里我们将深入探讨这两种参数的区别,并通过实际应用来理解它们。 首先,`&lt;context-...

    spring创建bean简单示例

    Spring允许我们定义Bean的生命周期,如初始化方法和销毁方法。使用`@PostConstruct`和`@PreDestroy`注解来指定这些方法。 ```java @Service public class MyService { @PostConstruct public void init() { // ...

    Spring框架初始化解析

    postProcessAfterInitialization方法,在Spring中定义的Bean初始化后调用这个方法。 三、 Spring容器加载完成后执行从spring监听器作为入口。org.springframework.web.context.ContextLoaderListener找到初始化...

    Spring高级应用,Bean讲解

    在 Spring 中,可以使用 `init-method` 和 `destroy-method` 属性来指定 Bean 的初始化和销毁方法。 Bean 是 Spring 框架中的核心组件,理解 Bean 的概念、配置、实例化和生命周期是使用 Spring 框架的基础。

    Java中Spring获取bean方法小结

    - **BeanFactory** 是Spring中最基础的IoC容器,负责管理和实例化Bean。它允许开发者定义Bean的生命周期和依赖关系,提供了低级别的配置选项。 - **ApplicationContext** 是BeanFactory的扩展,增加了更多面向应用...

    day38 16-Spring的Bean的装配:注解的方式

    6. **生命周期方法**:使用`@PostConstruct`和`@PreDestroy`注解来定义Bean初始化和销毁时执行的方法。 ```java @Service public class ServiceWithLifecycle { @PostConstruct public void init() { // 初始化...

    Spring配置文件spring-context.zip

    5. `init-method`和`destroy-method`:指定bean初始化和销毁时要调用的方法。 6. `&lt;import&gt;`:引入其他配置文件,方便模块化和复用。 7. `&lt;context:component-scan&gt;`:通过注解扫描特定包下的类,自动发现并注册带...

    Spring Context内部知识:第1部分-刷新

    6. **初始化回调**:所有bean实例化和依赖注入完成后,Spring会调用那些声明了初始化方法(init-method)的bean。这允许开发者在bean完全准备好使用之前执行自定义逻辑。 7. **事件发布**:最后,`...

    Spring的初始化和XML解析的实现

    在bean实例化后,Spring允许开发者定义初始化回调方法(`init-method`),这些方法会在bean初始化完成后执行。同时,Spring还提供了`BeanPostProcessor`接口,允许自定义逻辑在bean实例化和初始化之后进行干预。 ...

    bp-support-spring-context:支持使用Spring Context

    2. **Bean的生命周期管理**:Spring Context负责创建、初始化、管理和销毁bean。它支持各种生命周期回调方法,如`init-method`和`destroy-method`,使得开发者可以在特定阶段执行自定义逻辑。 3. **依赖注入**:这...

    百知教育 — Spring系列课程 — 工厂高级特性1

    - 可以通过`init-method`属性指定初始化方法,如`&lt;bean id="product" class="xxx.Product" init-method="myInit"/&gt;`,当Bean被创建后会调用`myInit`方法。 5. **接口初始化**: - `InitializingBean`接口提供了`...

    spring笔记

    * Servlet、Filter、Interceptor 等,接口中都有 void init() 初始化方法、void destroy() 销毁方法 依赖注入 * 构造器注入 * 属性注入 p 名称空间的支持 * 引入 p 名称空间 * 使用 p 名称空间注入属性 SpEL:...

    Spring系列面试题129道(附答案解析)

    Spring的WEB模块提供了构建Web应用程序的基础架构,包括支持多部分文件上传、使用Servlet监听器初始化IoC容器以及集成Spring MVC。 70、解释Spring配置文件。 Spring配置文件是一个XML文件,它包含了应用程序中Bean...

    spring.xls

    spring的IOC: ... * 初始化 * 由spring容器调用init方法 * 在构造函数之后执行 * 销毁 * 如果是单例,则必须返回ClassPathXmlApplicationContext该容器,才能执行销毁工作 * 如果是多例,容器不负责销毁

    Spring装配Bean教程之XML安装配置bean详解

    此外,XML配置还支持许多其他特性,如`init-method`和`destroy-method`用于指定Bean的初始化和销毁方法,`scope`属性用于设置Bean的作用域(如单例、原型等),以及`&lt;import&gt;`元素用于导入其他配置文件。 虽然现代...

    spring3注解详细

    @PostConstruct 是 JSR-250 规范的一部分,用于标记在 Bean 初始化后由 Spring 容器执行的方法。这意味着该方法会在所有依赖注入完成后调用,但在此之前。例如: ```java public class UserDaoImpl extends ...

    Spring实例化bean的方式代码详解

    无论使用`BeanFactory`还是`ApplicationContext`,Spring默认以单例(`singleton`)模式初始化bean。这意味着在整个应用中,每个bean只有一个实例。如果需要其他作用域,如原型(`prototype`),则需要在配置中指定...

Global site tag (gtag.js) - Google Analytics