您的位置:首页 > 移动开发

010-Spring Boot 扩展分析-ApplicationContextInitializer、CommandLineRunner

2018-01-25 22:06 513 查看

一、常见的两个扩展点

1、ApplicationContextInitializer

1.1、作用实现

作用:接口实在Spring容器执行refresh之前的一个回调。

Callback interface for initializing a Spring {@link ConfigurableApplicationContext}

实现:

package com.lhx.spring.springboot_enableauto;

import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class ServerSuccessReport implements CommandLineRunner {

@Override
public void run(String... args) throws Exception {
System.out.println("----CommandLineRunner执行-----");
}

}


View Code
注意同类接口

ApplicationRunner,

void run(ApplicationArguments args)


只是参数不一样

CommandLineRunner是原始参数,没有任何处理

ApplicationRunner是ApplicationArguments 对象,是对原始参数进一步的封装

3.ApplicationArguments

是对参数(main方法)进一步重载

可以解析--name=value的,可以通过name获取value

package com.lhx.spring.springboot_enableauto;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContextInitializer;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(App.class);
ConfigurableApplicationContext context = application.run(args);

ApplicationArguments arguments = context.getBean(ApplicationArguments.class);
System.out.println(arguments.getSourceArgs().length);
System.out.println(arguments.getOptionNames());
System.out.println(arguments.getOptionValues("name"));

context.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: