在做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)
分享到:
相关推荐
在 `Spring Boot` 应用中,可以创建一个启动类,使用 `CanalClient` 进行初始化并启动监听。这种方式的优点是直接、简单,但缺点是难以集成到复杂系统,且无法实现分布式部署。 **2. 结合 RabbitMQ 监听:** ...
- **资源初始化**:在应用启动时,可以使用监听器加载配置文件或初始化数据库连接池等资源。 - **性能优化**:通过监听HttpSession事件,可以实现会话超时提醒、会话数据的持久化等。 - **安全性增强**:监控用户...
通过实现该接口,开发者可以在应用启动或关闭时执行特定操作,如数据初始化、日志记录等。 3. **过滤器(Filters)**: 过滤器在请求处理前后进行拦截,可以用于实现全局的HTTP请求响应处理,如登录验证、字符编码...
同时,提供的`industry.sql`可能是数据库初始化脚本,用于创建所需的表结构和初始数据。在项目启动前,可以使用这些脚本来快速设置测试环境。 `aclome`可能是指项目的名字或者一个特定的模块,具体用途需要查看...
总结来说,Shiro 整合 Spring 的过程涉及到多个层面,包括依赖配置、安全策略定义、数据库初始化、过滤器链设置以及业务逻辑的实现。通过这种整合,我们可以充分利用 Shiro 的安全特性,同时借助 Spring 的灵活性和...
使用 DWR JavaScript API 调用 `CascadingService` 的方法,初始化第一个下拉列表框,并在选择部门时动态更新第二个下拉列表框。 6. **事件处理**:在 JavaScript 中,监听第一个下拉列表框的 `onchange` 事件,当...
5. **数据访问**:深入 Spring JDBC、JPA、Hibernate 等模块,理解如何简化数据库操作。 6. **事务管理**:掌握 Spring 提供的声明式事务管理,以及事务的传播行为。 7. **AOP 实现**:学习 Spring 如何利用代理模式...
2. **数据访问**:Spring JDBC和ORM模块(如Hibernate、MyBatis集成)借助Spring Core的DI,简化了数据库操作。 3. **事务管理**:Spring的声明式事务管理是通过Spring Core实现的,使得事务处理更加透明和易于管理...
同时,还需要设置Spring的监听器,如ContextLoaderListener,用于初始化Spring的ApplicationContext。 总的来说,SSM框架的搭建涉及多个步骤和组件,每个部分都有其特定的职责和功能。理解这些组件的工作原理并正确...
2. **web.xml配置**:在`web.xml`中添加`ContextLoaderListener`监听器,它的作用是在应用启动时初始化Spring的ApplicationContext。这样,Spring就可以在应用上下文中管理所有bean。 ```xml <listener-class>...
这个文件可能包含了省市县的结构化数据,例如JSON格式,用于初始化或填充前端的下拉列表。内容可能是这样的: ```json { "province": [ {"id": 1, "name": "北京市"}, {"id": 2, "name": "上海市"} ], "city...
2. **配置Druid**:在application.properties或application.yml文件中,配置Druid的数据源属性,例如数据库连接信息、初始化大小、最大连接数等。例如: ```properties spring.datasource.type=...
Spring Boot是Java领域的一个热门框架,它简化了Spring应用程序的初始搭建以及开发过程,通过预配置的starter,可以快速构建各种类型的应用程序。Vue.js则是一款轻量级的前端JavaScript框架,以其易用性和灵活性在...
综上所述,这个教学资源库系统案例设计涉及了现代Web开发的多个核心技术和最佳实践,包括后端服务的构建、前端用户界面的创建、数据库管理、API设计、安全性控制以及自动化流程,为学习者提供了丰富的实战经验。...
1. **Spring Initializr**:用于快速初始化项目,创建基本的项目结构,包括pom.xml配置文件和应用主类。 2. **Spring MVC**:SpringBoot内置的Web开发支持,处理HTTP请求和响应,实现RESTful API。 3. **Spring Data...
2. **集成xbee-api**:将xbee-api库引入项目,配置串行通信端口,初始化XBee设备,并设置监听器来处理来自XBee的通信事件。 3. **定义REST端点**:使用Spring MVC的`@RestController`注解创建控制器类,定义`@...
4. **数据库集成**:使用Spring Data JPA或MyBatis,可以方便地与MySQL等数据库进行交互,进行数据持久化。 5. **安全控制**:SpringBoot集成了Spring Security,可实现用户认证和授权,保护系统资源。 6. **...
1. **创建SpringBoot项目**:使用Spring Initializr初始化一个新的SpringBoot项目,选择所需的依赖,如Spring Web、Spring Data JPA等。 2. **添加Netty依赖**:在`pom.xml`或`build.gradle`文件中引入Netty的相关...
- 创建SpringBoot项目:利用Spring Initializr初始化项目,选择所需依赖。 - 编写主启动类:定义应用入口,添加必要的配置。 - 配置业务逻辑:利用Spring的依赖注入机制添加服务和控制器。 - 运行与测试:通过`...