自定义application.yml配置项方式
作者:平平常常一般牛
我们现在在springboot中,极其简单的配置就可以完成以前很复杂的配置,application.yml配置很不错,闲着没事噶,就研究了一下yml如何通过在yml文件中配置来自动加载一些配置,还有就是好奇他是怎么实现一点击就跳转到配置类中的。
1、加入配置依赖及maven插件
<!--配置注释处理以来--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <version>2.6.4</version> </dependency> <!--maven 插件--> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </plugins>
2、元注解分析
我们写一个外部的配置类,我们还要在配置类上边加入两个元注解 @Component
:组件注解,将该配置文件放到ioc容器中,@ConfigurationProperties
外部配置文件注解,表明这是一个外部的配置文件。
特别注意的是,我们配置的文件一定要放入到ioc容器中,否则的话@ConfigurationProperties
就会发现不了这个文件,从而报错。
如下图,我们点进去这个注解,看他是怎么定义的。
可以看到,下面的两个属性,并且都取了一个别名,也就是说,不管我们在指定value,还是 profix 属性,我们可以看到,它们都是一个作用。都是有效的绑定对象的前缀。
3、配置文件
我们的这个配置文件就是说,当我们在yml中点击配置属性的时候跳转的类。
下面是我写的一个实体类配置,setter和getter方法我就不在下面列举了。
@Component @ConfigurationProperties(prefix = "user") public class User { /** * Column: id * Type: INT */ private Integer id; /** * Column: username * Type: VARCHAR(12) */ private String username; /** * Column: phone * Type: BIGINT */ private Long phone;
配置好了之后呢,已经要maven编译一遍,不然不知道。
如下图:
4、测试能不能用
如下图可以看到,我们输入user前缀的时候,就已经将我们的配置项提示出来了。
说明我们的配置很成功。
5、怎么从配置里面取值并加载呢?
这个也是很简单的,因为我们将我们的配置放到了ioc容器中了,要实现自动加载取值并实现某种逻辑。
我们将这个配置注入到我们需要执行的方法或者类中,并将要需要自动执行的逻辑或者类放入到ioc中。
第一:我们在配置中加入值
第二:编写一个自动配置类
我这里就不做什么很复杂的逻辑了,就简单输出一下我取到的值,告诉其中的原理就行,要是有其他的逻辑就是按照这个原理来的。
@Configuration public class CommonConfig { @Autowired User user; @Bean public void get(){ System.out.println(user.getId()); } }
启动一下,可以看到配置自动加载出来。
并输出 出来了。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。