listener初始化数据
/*** 初始化一些数据**/public class ApplicationInitialListener implements ApplicationListener{/*** 避免刷新root-application容器和project-name容器时执行两次代码的类变量*/private static boolean is
·
/**
* 初始化一些数据
*
*/
public class ApplicationInitialListener implements ApplicationListener<ContextRefreshedEvent>{
/**
* 避免刷新root-application容器和project-name容器时执行两次代码的类变量
*/
private static boolean isStart=false;
@Autowired
private UserService userService;
@Override
public void onApplicationEvent(ContextRefreshedEvent arg0) {
if(!isStart){
isStart=true;
}else{
setDefaultUser();
}
}
/**
* 设置一个默认的用户
*/
private void setDefaultUser() {
User entity = this.userService.findByName("administrator");
if (entity == null) {
User user = new User();
user.setName("administrator");
user.setPassword("123456");
this.userService.save(user);
}
}
}
ContextRefreshedEvent:当ApplicationContext初始化或者刷新时触发该事件。
如何使用它呢?
前段时间用注解来配置的时候说过,
/**
* 替代Web.xml 的配置代码
*/
public class DefaultConfigration implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext context) throws ServletException {
context.addListener(new ContextLoaderListener());
context.addListener(new WebAppRootListener());
context.setInitParameter("contextConfigLocation", "classpath*:**/*Context.xml");
}
}
加载了spring的配置文件进去了,然后又可以利用spring的context:component-scan来扫描一些包:
<context:component-scan base-package="com.boventech.learning" use-default-filters="false">
<context:include-filter type="regex"
expression="com.boventech.learning.controller.*Controller" />
<context:include-filter type="regex"
expression="com.boventech.learning.daoImpl.*Impl" />
<context:include-filter type="regex"
expression="com.boventech.learning.serviceImpl.*Impl" />
<context:include-filter type="regex"
expression="com.boventech.learning.listener.*" />
</context:component-scan>
这个时候扫描到了listener包,上面那个.java文件在listener内部,所以可以扫描到。继而执行了。
老妈上星期脚伤了,端午节一放假就要回老家,下午已经有点晚了,怕没车赶慌,拿的东西也有些多,结果忘记拿笔记本充电器了,在老家问了半天有没有thinkpad的方口充电器,结果愣是没找到,都说:那是新充电器,都没有人坏。端午看能不能早点搭车到上班的地方去,在哪里再学习。草,运气真糟
参考文章
更多推荐
已为社区贡献1条内容
所有评论(0)