序言:对自己Springboot项目有各种小小洁癖感的同学可以看过来,这个针对Springboot任何版本,虽然标题是2.0.x。
接下来讲说的是Springboot创建的时候,选择图下这个依赖的作用,文件处理器,Spring Configuration Processor,它的作用和 主配置文件application.properties或者application.yml里面的spring.profiles.active有着相似的作用,但是不同的是,使用spring.profiles.avtive,你添加的其他配置文件命名格式只能是application-{name}.properties或者application-{name}.yml,而使用文件处理器这个依赖,则对文件名没有任何约束。
1、pom依赖
org.springframework.boot spring-boot-configuration-processor true
2、创建其他配置文件
love.you=aoxin love.me=mdxl love.they=78
这个配置文件先命名为 application-haha.properties,然后如果想要使用里面的属性值的时候,只能在application.propertiesz中加入
spring.profiles.active=haha
这样,我们才能在代码类中获取到该值,如下:
@RestController public class DockerController { @Value("${love.you}") private String name; @GetMapping("/test1") public String test1(){ return name; } }
3、文件处理器
使用文件处理器,我们可以创建任意名字的配置文件,如 haha.properties,同时也不需要在application配置文件中引入,我们可以直接使用,不过有一个前提就是在引入它的属性值的类上,加上注解 @PropertySource("classpath:haha.properties"),这样我们依旧可以使用。把之前active的引入删除。
@RestController @PropertySource("classpath:haha.properties") public class DockerController { @Value("${love.you}") private String name; @GetMapping("/test1") public String test1(){ return name; } }
4、为什么使用它?
那么看上去也并没有区别么,倒是有一点费劲的感觉,其实不然,因为有些配置文件里面的属性,有些开发工程师是直接想在配置类中使用,不想在主配置文件spring.profiles.active依赖,而这种属性值往往也不分开发环境、仿真环境和线上环境的,所以会有一小部分开发工程师乐意去使用它。