很多时候,我们需要将一些配置信息写在配置文件中,例如邮件账号等,最简单的方式就是写在application.yml中,然后通过`@Value`注解获取。 ## 1、@Value 例如配置文件这个样子: ```yaml mail: username: xueye password: xueye.password sender: xueye@simaek.com host: mail.xueye.io port: 587 ``` 我们需要用到配置的地方使用`@Value(${property}`注解获取: ```java // 成员变量上 @Value(${mail.username}) String username; // Set方法上 @Value(${mail.username}) public void setUsername(String username){ this.username = username; } ``` 但是这种方式是不推荐的。最佳实践是通过`@ConfigurationProperties`注解将配置信息和Bean绑定。 ## 2、@ConfigurationProperties 还是上面的配置,添加一个Bean如下,为了不啰嗦,只写了部分属性。 这种方式会将配置文件中mail开头的配置,自动注入到Bean属性上,在需要读取配置信息的时候,可以需要的地方将这个配置Bean像普通Bean一样注入。 还有一个好处就是,IDEA中不会再有警告信息了,而且在填写配置的时候会有自动提示。 ```java @Component @ConfigurationProperties(prefix = "mail") public class MailProperties { /** * 用户名 */ private String username; /** * 密码 */ private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ``` 另外还可以方便的对属性进行校验,例如邮箱,如果校验不通过,就会抛出数据绑定异常,程序就无法运行,保证了安全性。 ```java @Email private String mail; ``` ## 3、@PropertyResource 以上都是使用spring默认的配置文件application.yml,有时我们可能有自己单独的配置文件,这种情况下可以使用`@PropertyResource`注解读取指定的配置文件。示例如下,为了简洁省略了get、set方法。 ```java @Component @PropertySource("classpath:mail.properties") class MailProperties { @Value("${mail.username}") private String username; } ``` > 补充一下SpringBoot配置文件优先级,从高到下依次是: > > config/application.yml(jar包所在目录) > > classpath:config/application.yml > > classpath:application.yml Loading... 很多时候,我们需要将一些配置信息写在配置文件中,例如邮件账号等,最简单的方式就是写在application.yml中,然后通过`@Value`注解获取。 ## 1、@Value 例如配置文件这个样子: ```yaml mail: username: xueye password: xueye.password sender: xueye@simaek.com host: mail.xueye.io port: 587 ``` 我们需要用到配置的地方使用`@Value(${property}`注解获取: ```java // 成员变量上 @Value(${mail.username}) String username; // Set方法上 @Value(${mail.username}) public void setUsername(String username){ this.username = username; } ``` 但是这种方式是不推荐的。最佳实践是通过`@ConfigurationProperties`注解将配置信息和Bean绑定。 ## 2、@ConfigurationProperties 还是上面的配置,添加一个Bean如下,为了不啰嗦,只写了部分属性。 这种方式会将配置文件中mail开头的配置,自动注入到Bean属性上,在需要读取配置信息的时候,可以需要的地方将这个配置Bean像普通Bean一样注入。 还有一个好处就是,IDEA中不会再有警告信息了,而且在填写配置的时候会有自动提示。 ```java @Component @ConfigurationProperties(prefix = "mail") public class MailProperties { /** * 用户名 */ private String username; /** * 密码 */ private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ``` 另外还可以方便的对属性进行校验,例如邮箱,如果校验不通过,就会抛出数据绑定异常,程序就无法运行,保证了安全性。 ```java @Email private String mail; ``` ## 3、@PropertyResource 以上都是使用spring默认的配置文件application.yml,有时我们可能有自己单独的配置文件,这种情况下可以使用`@PropertyResource`注解读取指定的配置文件。示例如下,为了简洁省略了get、set方法。 ```java @Component @PropertySource("classpath:mail.properties") class MailProperties { @Value("${mail.username}") private String username; } ``` > 补充一下SpringBoot配置文件优先级,从高到下依次是: > > config/application.yml(jar包所在目录) > > classpath:config/application.yml > > classpath:application.yml 最后修改:2023 年 08 月 02 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏