需求:应用程序启动后,初始化基础数据、加密证书等操作。
可以使用CommandLineRunner接口来实现,在SpringBoot.run()之后完成资源的初始化工作。
注意:多个Runner需要顺序启动的话,可以使用@Order注解
package sun.flower.diver.modules.system.init;import org.springframework.boot.CommandLineRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component;/*** 应用程序启动后加载基础数据 Runner** @Author YangXuyue* @Date 2018/10/28 13:48*/ @Component @Order(1) public class BaseDataRunner implements CommandLineRunner { @Override public void run(String... strings) throws Exception { System.out.println("start init base data"); } }
package sun.flower.diver.modules.system.init;import org.springframework.boot.CommandLineRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component;/*** 应用程序启动后加载证书 Runner** @Author YangXuyue* @Date 2018/10/28 13:50*/ @Component @Order(2) public class CertificateRunner implements CommandLineRunner { @Override public void run(String... strings) throws Exception { System.out.println("start init certificate info"); } }
package sun.flower.diver;import org.springframework.boot.Banner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication // 添加注解 @EnableDiscoveryClient,只有这样,服务注册、心跳检测相关配置信息才能被自动加载 @EnableDiscoveryClient public class DiverApplication { public static void main(String[] args) { System.out.println("application start"); SpringApplication application = new SpringApplication(DiverApplication.class); // 添加监听器,此时监听器类不需要标注是一个Bean //application.addListeners(new BaseListener()); application.setBannerMode(Banner.Mode.OFF); application.run(args); System.out.println("application started"); } }