也许我们会碰到这样的场景:
我们想在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就可以了,和本文讨论的场景是不一样的。
分享到:
相关推荐
spring的IOC: ... * 初始化 * 由spring容器调用init方法 * 在构造函数之后执行 * 销毁 * 如果是单例,则必须返回ClassPathXmlApplicationContext该容器,才能执行销毁工作 * 如果是多例,容器不负责销毁
--全局初始化参数--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> 4.在Servlet中使用...
在这里,我们使用 @PostConstruct 和 @PreDestroy 注解来指定组件的初始化和销毁方法,这样可以在组件的生命周期中执行特定的操作。 @Component、@Repository、@Service、@Controller 等注解是 Spring 框架中常用的...
我们前面已经指出Oracle的Lob字段和一般类型的字段在操作上有一个明显的区别--那就是你必须首先通过Oracle的empty_blob()/empty_clob()初始化Lob字段,然后获取该字段的引用,通过这个引用更改其值。所以要完成对...
初始化连接大小 ${jdbc.initialSize}"> 连接池最大数量 ${jdbc.maxActive}"> 连接池最大空闲 ${jdbc.maxIdle}"> 连接池最小空闲 ${jdbc.minIdle}"> 获取连接最大等待时间 ${jdbc.maxWait}"> </...
插入初始化数据:init.data.sql 3.运行。 管理员帐号:admin 密码:sojson ps:定时任务的sql会把密码改变为sojson.com 新版本说明:http://www.sojson.com/blog/164.html 和 ...
HttpFlexSession 是 BlazeDS 提供的一个 Listener,负责监听 Flex 远程调用请求,并进行一些初始化设置: 清单 4. 定义 Flex Listener <listener> <listener-class>flex.messaging.HttpFlexSession...
HttpFlexSession 是 BlazeDS 提供的一个 Listener,负责监听 Flex 远程调用请求,并进行一些初始化设置: 清单 4. 定义 Flex Listener <listener> <listener-class>flex.messaging.HttpFlexSession...
其中jeecms-context.xml是对标签的初始化 <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.shtml</welcome-file> <welcome-file>index.jhtml</welcome-file> ...
在模板里对sequences和hashes初始化 sequences 1. [“you”,”me”,”he”] 2. 1..100 3. [ {“Akey”:”Avalue”},{“Akey1”:”Avalue1”}, {“Bkey”:”Bvalue”},{“Bkey1”:”Bvalue1”}, ] hashes {“you”:...