Spring Web应用程序:在启动时执行某些操作(初始化)

Fab*_* B. 7 spring hibernate initialization spring-mvc startup

我想在启动时从文本文件填充我的数据库的一些表,我希望仅在我的应用程序启动时调用我的初始化方法.

我使用Spring(+ MVC)和Hibernate与MySQL.

我能怎么做?

sin*_*pop 17

您可以创建一个应用程序监听器,它专门针对这些需求而设计.在这种情况下,它将在每次启动(或刷新)上下文时执行.

@Component
public class DatabaseFillerOnStartup implements ApplicationListener<ContextRefreshedEvent> {
    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)


Ral*_*lph 7

Hibernate附带了一种方法来添加一些带有sql语句的文件,这些语句将在启动时执行.

参数是hibernate.hbm2ddl.import_files.

@See Hibernate参考:第3.4章.可选配置属性

  • 表3.7.杂项属性
  • hibernate.hbm2ddl.import_files:

包含在SessionFactory创建期间执行的SQL DML语句的可选文件的逗号分隔名称.这对于测试或演示非常有用:例如,通过添加INSERT语句,您可以在部署数据库时使用最少的数据集填充数据库.

文件顺序很重要,给定文件的语句在以下文件的语句之前执行.这些语句仅在创建模式时执行,即如果hibernate.hbm2ddl.auto设置为create或create-drop.

例如/humans.sql,/dogs.sql

我喜欢一些提示,这可能只有在"创建"模式下启动休眠时才有效.但我不确定.


Nim*_*sky 5

在bean内部的某处使用postconstuct注释:

@PostConstruct
public void init() {
     //startup logic here
}
Run Code Online (Sandbox Code Playgroud)

可能使(设计)有意义使用配置bean,但它可以是任何bean.