当前位置:
尊龙游戏旗舰厅官网 >
前端技术
> javascript
>内容正文
javascript
springboot applicationlistener监听器的使用-尊龙游戏旗舰厅官网
尊龙游戏旗舰厅官网
收集整理的这篇文章主要介绍了
springboot applicationlistener监听器的使用-监听applicationreadyevent事件
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
springboot监听器
applicationcontext事件机制是观察者设计模式的实现,通过applicationevent类和applicationlistener接口,可以实现applicationcontext事件处理。
如果容器中有一个applicationlistener bean,每当applicationcontext发布applicationevent时,applicationlistener bean将自动被触发。这种事件机制都必须需要程序显示的触发。
spring boot中支持的事件类型如下:
- applicationfailedevent:该事件为spring boot启动失败时的操作
- applicationpreparedevent:上下文context准备时触发
- applicationreadyevent:上下文已经准备完毕的时候触发
- applicationstartedevent:spring boot 启动监听类
- springapplicationevent:获取springapplication
- applicationenvironmentpreparedevent:环境事先准备
springboot监听applicationreadyevent事件用例
自定义监听器
解决mybatis多数据源,可以在项目启动的时候候指定数据源
package com.sl.listener;import org.mybatis.spring.sqlsessiontemplate; import org.mybatis.spring.support.sqlsessiondaosupport; import org.springframework.beans.factory.annotation.value; import org.springframework.boot.context.event.applicationreadyevent; import org.springframework.context.applicationlistener; import org.springframework.context.configurableapplicationcontext; import org.springframework.stereotype.component;import javax.annotation.resource; import java.util.arrays; import java.util.list; import java.util.map; import java.util.stream.stream;/*** @author shuliangzhao* @title: myapplicationeventlistener* @projectname spring-boot-learn* @description: todo* @date 2019/10/17 20:24*/ @component public class myapplicationeventlistener implements applicationlistener<applicationreadyevent> {@resource(name = "targetsqlsessiontemplate")private sqlsessiontemplate targetsqlsessiontemplate;@resource(name = "midsqlsessiontemplate")private sqlsessiontemplate midsqlsessiontemplate;//包名 不同的包名以逗号分隔@value("{taget.source}")private string targetsource;//包名@value("{mid.source}")private string midsource;@overridepublic void onapplicationevent(applicationreadyevent applicationreadyevent) {configurableapplicationcontext applicationcontext = applicationreadyevent.getapplicationcontext();map<string, sqlsessiondaosupport> beanmap = applicationcontext.getbeansoftype(sqlsessiondaosupport.class);string[] targetscanpath = targetsource.split(",");string[] midscanpath = midsource.split(",");list<string> targetlist = arrays.aslist(targetscanpath);list<string> midlist = arrays.aslist(midscanpath);beanmap.foreach((k,v) -> {string name = v.getclass().getpackage().getname();if (targetlist.contains(name)) {v.setsqlsessiontemplate(targetsqlsessiontemplate);}else if (midlist.contains(name)) {v.setsqlsessiontemplate(midsqlsessiontemplate);} } );} }总结
以上是尊龙游戏旗舰厅官网为你收集整理的springboot applicationlistener监听器的使用-监听applicationreadyevent事件的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: spring aop注解方式实现日志管理
- 下一篇: springboot @value、 @