いくつかの重要なイベントのコールバックメカニズム
META-INF / spring.factories設定ApplicationContextInitializer
SpringApplicationRunListener
IOC唯一の二つの容器が置かれApplicationRunner CommandLineRunnerを
プロセスを開始します。
まず、オブジェクトSpringApplicationを作成します
第二に、実行runメソッド
第三に、イベントリスナーメカニズム
META-INF / spring.factoriesの設定
ApplicationContextInitializer
パブリック クラス HelloApplicationContextInitializer 実装 ApplicationContextInitializer <ConfigurableApplicationContext> { @Override 公共 のボイド のinitialize(ConfigurableApplicationContext ApplicationContextの){ System.out.printlnは( "ApplicationContextInitializer ...初期化..." + のApplicationContext)。
} }
SpringApplicationRunListener
public class HelloSpringApplicationRunListener implements SpringApplicationRunListener { //必须有的构造器 public HelloSpringApplicationRunListener(SpringApplication application, String[] args){ } @Override public void starting() {
System.out.println("SpringApplicationRunListener...starting..."); } @Override public void environmentPrepared(ConfigurableEnvironment environment) {
Object o = environment.getSystemProperties().get("os.name"); System.out.println("SpringApplicationRunListener...environmentPrepared.."+o); } @Override public void contextPrepared(ConfigurableApplicationContext context) {
System.out.println("SpringApplicationRunListener...contextPrepared..."); } @Override public void contextLoaded(ConfigurableApplicationContext context) {
System.out.println("SpringApplicationRunListener...contextLoaded..."); } @Override public void finished(ConfigurableApplicationContext context, Throwable exception)
配置(META-INF/spring.factories)
org.springframework.context.ApplicationContextInitializer=\
com.atguigu.springboot.listener.HelloApplicationContextInitializer
org.springframework.boot.SpringApplicationRunListener=\
com.atguigu.springboot.listener.HelloSpringApplicationRunListener
只需要放在ioc容器中
ApplicationRunner
@Component public class HelloApplicationRunner implements ApplicationRunner{ @Override public void run(ApplicationArguments args) throws Exception { System.out.println("ApplicationRunner...run...."); } }
CommandLineRunner
@Component public class HelloCommandLineRunner implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("CommandLineRunner...run..."+ Arrays.asList(args)); } }