`
away888
  • 浏览: 27216 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

借助Spring监听接口为数据库初始化数据(转)

阅读更多
在做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)

分享到:
评论
1 楼 kingliu 2011-04-07  
不错,我在找这方面的东西

相关推荐

    整合canal监听mysql

    在 `Spring Boot` 应用中,可以创建一个启动类,使用 `CanalClient` 进行初始化并启动监听。这种方式的优点是直接、简单,但缺点是难以集成到复杂系统,且无法实现分布式部署。 **2. 结合 RabbitMQ 监听:** ...

    servlet事件监听

    - **资源初始化**:在应用启动时,可以使用监听器加载配置文件或初始化数据库连接池等资源。 - **性能优化**:通过监听HttpSession事件,可以实现会话超时提醒、会话数据的持久化等。 - **安全性增强**:监控用户...

    springboot2集成代码生成器、监听器、过滤器、拦截器、分布式定时任务、pagehelper

    通过实现该接口,开发者可以在应用启动或关闭时执行特定操作,如数据初始化、日志记录等。 3. **过滤器(Filters)**: 过滤器在请求处理前后进行拦截,可以用于实现全局的HTTP请求响应处理,如登录验证、字符编码...

    Spring+mvc+mybatis Mapper xml自动加载

    同时,提供的`industry.sql`可能是数据库初始化脚本,用于创建所需的表结构和初始数据。在项目启动前,可以使用这些脚本来快速设置测试环境。 `aclome`可能是指项目的名字或者一个特定的模块,具体用途需要查看...

    Shiro整合Spring

    总结来说,Shiro 整合 Spring 的过程涉及到多个层面,包括依赖配置、安全策略定义、数据库初始化、过滤器链设置以及业务逻辑的实现。通过这种整合,我们可以充分利用 Shiro 的安全特性,同时借助 Spring 的灵活性和...

    DWR+hibernate+spring级联下拉列表框

    使用 DWR JavaScript API 调用 `CascadingService` 的方法,初始化第一个下拉列表框,并在选择部门时动态更新第二个下拉列表框。 6. **事件处理**:在 JavaScript 中,监听第一个下拉列表框的 `onchange` 事件,当...

    适合想要编译spring源码,学习框架源码同学

    5. **数据访问**:深入 Spring JDBC、JPA、Hibernate 等模块,理解如何简化数据库操作。 6. **事务管理**:掌握 Spring 提供的声明式事务管理,以及事务的传播行为。 7. **AOP 实现**:学习 Spring 如何利用代理模式...

    开发工具 spring-core-4.3.6.RELEASE.rar

    2. **数据访问**:Spring JDBC和ORM模块(如Hibernate、MyBatis集成)借助Spring Core的DI,简化了数据库操作。 3. **事务管理**:Spring的声明式事务管理是通过Spring Core实现的,使得事务处理更加透明和易于管理...

    搭建SSM框架所依赖的jar

    同时,还需要设置Spring的监听器,如ContextLoaderListener,用于初始化Spring的ApplicationContext。 总的来说,SSM框架的搭建涉及多个步骤和组件,每个部分都有其特定的职责和功能。理解这些组件的工作原理并正确...

    SSH框架整合现成的例子

    2. **web.xml配置**:在`web.xml`中添加`ContextLoaderListener`监听器,它的作用是在应用启动时初始化Spring的ApplicationContext。这样,Spring就可以在应用上下文中管理所有bean。 ```xml <listener-class>...

    省市县 三级联动 可用于 .net java

    这个文件可能包含了省市县的结构化数据,例如JSON格式,用于初始化或填充前端的下拉列表。内容可能是这样的: ```json { "province": [ {"id": 1, "name": "北京市"}, {"id": 2, "name": "上海市"} ], "city...

    springboot整合druid

    2. **配置Druid**:在application.properties或application.yml文件中,配置Druid的数据源属性,例如数据库连接信息、初始化大小、最大连接数等。例如: ```properties spring.datasource.type=...

    基于Springboot+Vue的论坛网站毕业源码.zip

    Spring Boot是Java领域的一个热门框架,它简化了Spring应用程序的初始搭建以及开发过程,通过预配置的starter,可以快速构建各种类型的应用程序。Vue.js则是一款轻量级的前端JavaScript框架,以其易用性和灵活性在...

    基于Springboot+Vue教学资源库系统源码案例设计.zip

    综上所述,这个教学资源库系统案例设计涉及了现代Web开发的多个核心技术和最佳实践,包括后端服务的构建、前端用户界面的创建、数据库管理、API设计、安全性控制以及自动化流程,为学习者提供了丰富的实战经验。...

    SpringBoot+Vue实现人事管理系统.zip

    1. **Spring Initializr**:用于快速初始化项目,创建基本的项目结构,包括pom.xml配置文件和应用主类。 2. **Spring MVC**:SpringBoot内置的Web开发支持,处理HTTP请求和响应,实现RESTful API。 3. **Spring Data...

    MakeASerialCommunicationREST:xbee-api 通过 Spring API REST

    2. **集成xbee-api**:将xbee-api库引入项目,配置串行通信端口,初始化XBee设备,并设置监听器来处理来自XBee的通信事件。 3. **定义REST端点**:使用Spring MVC的`@RestController`注解创建控制器类,定义`@...

    书评系统,基于SpringBoot和Vue开发.zip

    4. **数据库集成**:使用Spring Data JPA或MyBatis,可以方便地与MySQL等数据库进行交互,进行数据持久化。 5. **安全控制**:SpringBoot集成了Spring Security,可实现用户认证和授权,保护系统资源。 6. **...

    SpringBoot 整合 Netty 实战

    1. **创建SpringBoot项目**:使用Spring Initializr初始化一个新的SpringBoot项目,选择所需的依赖,如Spring Web、Spring Data JPA等。 2. **添加Netty依赖**:在`pom.xml`或`build.gradle`文件中引入Netty的相关...

    基于SpringBoot+Vue的BOM表智能生成系统设计与实现.docx

    - 创建SpringBoot项目:利用Spring Initializr初始化项目,选择所需依赖。 - 编写主启动类:定义应用入口,添加必要的配置。 - 配置业务逻辑:利用Spring的依赖注入机制添加服务和控制器。 - 运行与测试:通过`...

Global site tag (gtag.js) - Google Analytics