springcloud面试

SpringBoot 配置分析(一)

2018-08-16  本文已影响59人  上进的小二狗

一、引言

二、文章思维导图

思维导图

三、实现

3.1 获取配置的值,2种方式

方式一:获取environment 对象 调用getProperty()
local.ip = 192.168.91.111
@SpringBootApplication
public class SpringbootConfigurationApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(SpringbootConfigurationApplication.class, args);
        System.out.println("配置文件内容输出:"+context.getEnvironment().getProperty("local.ip"));
        context.close();
    }
}
结果打印:
纳入容器管理,需要Environment 对象注入,

再编写个类UserConfig,注入Environment,编写个show 的方法,context 来获取对象来调用方法

/**
 * @author liyao
 * @createTime 2018/8/16
 * @description
 */
@Component
public class UserConfig {

    @Autowired
    private Environment environment;

    /**
     * 配置文件信息打印
     */
    public void show(){
        System.out.println("=========local.ip:" + environment.getProperty("local.ip"));
    }

}
@SpringBootApplication
public class SpringbootConfigurationApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(SpringbootConfigurationApplication.class, args);
       // System.out.println("配置文件内容输出:"+context.getEnvironment().getProperty("local.ip"));
        context.getBean(UserConfig.class).show();
        context.close();
    }
}
结果打印:
方式二:直接读取配置文件@Value("${ }")

1、配置文件中加个 local.port = 8080

local.ip = 192.168.91.111
local.port = 8080

2、定义属性

@Component
public class UserConfig {

    @Value("${local.port}")
    private String localPort;

    @Autowired
    private Environment environment;

    /**
     * 配置文件信息打印
     */
    public void show(){
        System.out.println("方式1 =========local.ip:" + environment.getProperty("local.ip"));
        System.out.println("方式2 =========local.port:" + localPort);
    }

}
结果打印:

3.2、配置文件中变量的引用获取

1、配置文件添加

name = springboot
app.name= this is ${name}

2、引用输出

@Component
public class UserConfig {

    @Value("${local.port}")
    private String localPort;

    @Autowired
    private Environment environment;

    /**
     * 配置文件信息打印
     */
    public void show(){
        System.out.println("方式1 local.ip:" + environment.getProperty("local.ip"));
        System.out.println("方式2 local.port:" + localPort);
        System.out.println("======================================================");

        System.out.println("name: " + environment.getProperty("name"));
        System.out.println("app.name: " + environment.getProperty("app.name"));

    }

}
结果打印:

3.3 配置文件默认值配置

@Value 默认必须要有配置,配置项可以为空,如果没有配置项,则可以给默认值。

情况如下:

@Component
public class UserConfig {

    @Value("${local.port}")
    private String localPort;
    /**
     * @Value 默认必须要有配置,配置项可以为空,如果没有配置项,则可以给默认值
     */
    @Value("${tomcat.port:9090}")
    private String tomcatPort;

    @Autowired
    private Environment environment;

    /**
     * 配置文件信息打印
     */
    public void show(){
        System.out.println("方式1 local.ip:" + environment.getProperty("local.ip"));
        System.out.println("方式2 local.port:" + localPort);
        System.out.println("======================================================");

        System.out.println("name: " + environment.getProperty("name"));
        System.out.println("app.name: " + environment.getProperty("app.name"));

        System.out.println("======================================================");
        System.out.println("tomcatPort 默认值输出:" + tomcatPort);


    }

}

1、配置文件配置了

tomcat.port

但是不给值

输出为空

输出空
2、配置文件里面 删除 tomcat.port
给上默认值
@Value("${tomcat.port:9090}")
    private String tomcatPort;
则输出默认值: 输出默认值

3.4 配置文件的位置

1、项目的resources即一个classpath下的/config包
2、项目的resources即classpath根路径(root)
3、file :/
4、file :config /

详情见SpringBoot配置文件——加载顺序

3.5 引入外部文件

方式一:启动参数配置
1、默认的配置文件名字可以使用
--spring.config.name 来指定只需要指定文件的名字,扩展名可忽略
2、默认的配置文件路径可以使用
--spring.config.location 来指定,配置文件需要指定全路径,包括目录和文件的名字,还可以指定多个配置文件,用逗号隔开
方式二:注解开发
@Configuration
@PropertySource("classpath:jdbc.properties")
@PropertySources

image.png

配置文件中的配置项放入类中加载
@ConfigurationProperties(prefix="ds",locations="")

3.7 配置文件注入集合、数组
六、动态的引入配置文件

通过自己的逻辑随意的增加些读取些配置

七、配置文件动态处理、集中化管理,springboot已有

任意的读取配置,加入自己的逻辑
集中处理配置文件

八、springboot profile

application.properties
编程的方式指定


上一篇下一篇

猜你喜欢

热点阅读