1 package com.jt.mongo.demo.modules.init;
2
3 import org.slf4j.Logger;
4 import org.slf4j.LoggerFactory;
5 import org.springframework.context.ApplicationListener;
6 import org.springframework.context.event.ContextRefreshedEvent;
7 import org.springframework.core.io.ClassPathResource;
8 import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
9 import org.springframework.stereotype.Component;
10
11 import javax.annotation.Resource;
12 import javax.sql.DataSource;
13 import java.sql.SQLException;
14
15 @Component
16 public class SqlScriptInitExecutor implements ApplicationListener<ContextRefreshedEvent> {
17
18 private static final Logger LOGGER = LoggerFactory.getLogger(SqlScriptInitExecutor.class);
19
20 @Resource
21 private DataSource mysqlDataSource;
22
23 @Override
24 public void onApplicationEvent(ContextRefreshedEvent event) {
25 initMySqlTables();
26 }
27
28 private void initMySqlTables() {
29 try {
30
31 ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
32 populator.addScript(new ClassPathResource("sql/mysql_pdca_manager.sql"));
33 populator.populate(mysqlDataSource.getConnection());
34
35 LOGGER.info("init pdca manager tables success.");
36
37 } catch (SQLException e) {
38 LOGGER.error("init pdca manager tables error", e);
39 }
40 }
41 }
ContextRefreshedEvent:
Event raised when an {@code ApplicationContext} gets initialized or refreshed.
当容器初始化或者重启之后实例化到容器中,然后监听他的listener就会执行