关于springboot的配置还有几点:


1)嵌入系统配置信息

可以在配置文件中引用其它配置的内容,使用${}的方式,这个大家应该不陌生,使用mybatis的时候就用过这样的占位符。

myapplication.name : ${spring.application.name}

还可以动态的获取项目构建过程中的信息,如
info: 
  app:
    encoding: @project.build.sourceEncoding@
    java:
      source: @java.version@
      target: @java.version@

不过我没怎么用过,所以不知道什么场景下用这些比较合适,项目里的配置大部分是有固定值的,如果使用配置中心管理配置,那值是什么就不重要了,可以随时改,有经验的可以留言给大家讲讲~


2)自定义配置

可以在配置文件里写任何东西,只要符合规则就行。比如,写一个小游戏,要求初始化角色有3条命,生命数量还可以更改,就可以把这个内容写到配置文件里,然后在代码中使用,就不需要去改动代码了,这样的使用场景还是挺多的,没什么复杂的,符合规则,不跟默认配置重复即可。


3)读取配置内容

自定义的配置,怎么使用?方法还不少,使用注解就能实现,很简单。


@Value 注解

直接注入,可以增加默认值。

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

@Test
void contextLoads() {
    String aa = ev.getProperty("aa");
    System.out.println(aa);
    System.out.println(port);
}

@ConfigurationProperties

通过指定前缀使用配置文件中值,使用的值的名称要跟类中属性名称相同。

可以批量提取配置内容。

@Data
@Configuration
@ConfigurationProperties(prefix = "zx")
public class User {
    private String name;
}

zx.name=zhangxin

Environment

管理当前的应用环境信息,定义了获取 Profile 的方法,同时继承了 PropertyResolver,PropertyResolver 提供了属性访问的相关方法。注入 Environment 的实例,通过 getProperty 就可以获取对应的 Key 的属性值。

@SpringBootTest
class Demo2ApplicationTests {
    @Autowired
    private Environment ev;

    @Test
    void contextLoads() {
        String aa = ev.getProperty("aa");
        System.out.println(aa);
    }
}

配置这玩意吧,经常用的和一些项目中用过的,最好都记在笔记里,不然用的时候再查可麻烦,还不一定准确。面试直接问配置内容的,真有,我就遇到过,说不上具体内容,就知道要配置那些东西。这玩意能记住具体内容,可以体现记性比较好,或者是经常用这个东西,比较熟悉,但就算是经常用的,也不会每次用都手写一遍吧。。。肯定是复制粘贴。。。还好,我也没遇到过几次这样的。


下一篇说说注解,配置的一些概念就这样了,后面会把一些常用的配置梳理一遍。