`
jiava9900
  • 浏览: 86858 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Spring的Context初始化之后Bean的init的场景解决方法

    博客分类:
  • java
阅读更多
    也许我们会碰到这样的场景:
 
我们想在spring的所有bean初始化完毕之后执行一些bean的init操作
 
如果我们基于spring开发application,那么我们可能的做法就是,在调用spring初始化完毕之后接着去写我们的代码来初始化
 
如果我们基于spring开发web,那么我们很可能自定义一个listener,放在spring的listener之后去完成我们的初始化。
 
无论是哪种,我们都需要从spring获取我们的bean,然后调用bean的init方法
 
其实,(-------------------------华丽的分割线-------------------)
 
我们可以借助spring的事件去完成我们的场景。具体如下:
 
我们可能会定义这样一个借口:
 
public interface initializable {	public void init();}
 
我们希望所有需要init的bean都实现这个借口,然后我们在springbean初始化之后统一去init
 
spring bean初始化的event是:contextrefreshedevent,我们写一个listener去监听这个event,代码如下:
 
@componentpublic class initor implements applicationlistener {		@autowired(required=false)	list<initializable> initors;		@override	public void onapplicationevent(applicationevent event) {		if(null==initors)		{			return;		}		if(event instanceof contextrefreshedevent)		{			for(initializable initor:initors)			{				initor.init();			}		}	}}
 
当spring的context初始化完成之后就会触发contextrefreshedevent,此时我们根据这个判断,去完成我们的init
 
有兴趣的同学可以去看看其他的几种事件:
 
contextclosedevent----------context关闭时的事件
contextstartedevent---------context启动后的事件
contextstoppedevent--------context停止后的事件
 
注意:如果希望是在bean初始化之后去init,那么只需要配置init-method就可以了,和本文讨论的场景是不一样的。
 
0
1
分享到:
评论

相关推荐

    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

    此外,`&lt;bean&gt;`元素还支持通过`init-method`和`destroy-method`属性指定bean的初始化和销毁方法,以进行自定义的生命周期管理。 `spring-context-4.2.xsd`还定义了处理bean作用域(scope)、AOP代理(proxy)、事件...

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

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

    Java中Spring获取bean方法小结

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

    Spring高级应用,Bean讲解

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

    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找到初始化...

    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实例化和初始化之后进行干预。 ...

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

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

    spring笔记

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

    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.xls

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

    spring.docx

    例如,`scope`属性可以设置bean的作用域(如singleton、prototype等),`init-method`和`destroy-method`用于指定bean初始化和销毁时执行的方法。 此外,`pom.xml`文件展示了Maven的依赖管理,其中引入了Spring的...

    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