在做WEB项目时,经常在项目第一次启动时利用WEB容器的监听、Servlet加载初始化等切入点为数据库准备数据,这些初始化数据是系统开始运行前必须的数据,例如权限组、系统选项、默认管理员等等。但是项目若不是WEB工程,或者说还没用到WEB层(例如单元测试),这时应如何方便地初始化数据呢?
借助Spring容器是个很好的解决方案。Spring框架提供了事件机制,而事件机制必须实现ApplicationListener监听器,因此我们只要编写一个实现类实现该接口的onApplicationEvent方法,在方法体中检测数据库的初始化数据是否存在并选择初始化之。
步骤:
1、实现ApplicationListener接口
2、交给Spring管理
3、ok!
示例代码:
package com.zjh.dao;
import javax.annotation.Resource;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Repository;
@Repository//交给Spring管理,如果不是自动扫描加载bean的方式,则在xml里配一个即可
public class InitData implements ApplicationListener {
@Resource TestDao testDao;//注入一个dao,可以操控数据库
public void onApplicationEvent(ApplicationEvent event) {
initArticleCategory();
}
}
private void initArticleCategory(){
//检测数据库是否有初始化数据,若没有则在此初始化数据
if(testDao.getCount(ArticleCategory.class)==0){
//将文章的分类数据初始化到数据库
}
}
可以在onApplicationEvent方法中执行任何数据初始化动作,这样只要容器启动,就会执行这里的代码。
张纪豪(zhangjihao@sohu.com)
分享到:
相关推荐
初学SpringCloud简单配置Oracle数据库,从Oracle数据库中获取数据
Springcloud 多数库 多数据源整合,查询动态切换数据库
Spring Bean创建初始化流程
本资源为《基于Spring Cloud的分布式微服务电商项目大觅网实战》的数据库初始化脚本。 基于Spring Cloud的分布式微服务电商项目大觅网实战课程视频课程,电商类大觅网以Spring Boot为项目基础骨架,本课程基于该...
spring boot分页显示数据库中的数据,并且实现页面不刷新。具体使用了avalon.js和jquery技术,通过ajax提交数据
本篇文章主要介绍了Spring 中如何控制2个bean中的初始化顺序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本资源为《基于Spring Cloud的分布式微服务电商项目大觅网实战》的数据库初始化脚本。 基于Spring Cloud的分布式微服务电商项目大觅网实战课程视频课程,电商类大觅网以Spring Boot为项目基础骨架,本课程基于该...
spring事务与数据库操作
作为Nosql家族的一员,图存数据库在推荐系统,社交关系等领域拥有广泛应用。本项目基于Spring-data-neo4j,整合图存数据库Noe4j, 实现增删改查的功能。主要功能包括: 1.基于spring-data-neo4j ...Spring连接图存数据
spring的初始化,可以让初学者了解soring的开发过程,让开发轻松进入开发大门。
spring 重新动态加载数据库或xml中的bean,可以不用重启tomcat
Spring的IoC容器初始化源码解析,包括资源定位、加载、注册3个过程
spring对多个数据库进行事务管理,配置分布式事务
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
spring boot打印hello wordl 显示mysql数据
3、通过spring的xml bean配置或bean注解指定初始化方法,如下面实例的initMethod方法通过@bean注解指定。 销毁的时候实现的方法 1、通过java提供的@PreDestroy注释; 2、通过实现spring提供的DisposableBean接口,并...
spring boot 达梦7数据库驱动包
Spring Security 把授权信息写入数据库
确保数据库连接正确后,由于项目使用了 Liquibase 进行数据库初始化和更新,所以只需要启动项目即可自动创建初始化的表结构 Java 版本 JDK 21 SpringBoot 版本 3.2.5 项目启动后可以访问 ...
beanFactory.preInstantiateSingletons()的初始化过程详解,包含了所有的调用过程。