程序地带

springboot项目中如何从application.properties中取出自定义的配置信息


方式1:@Value

如果仅仅只有一两个配置信息,并且仅仅在很少的地方需要使用,那你可以直接使用@Value注入,比如:


@Value("${spring.cloud.alicloud.oss.endpoint}")
private String endpoint;

想要抽取一个模板的话,那就是@Value("${配置信息路径}"),我来给大家看一下我项目中的配置信息路径:


在这里插入图片描述 对于使用方法,就直接拿着该属性名称用就好,比如上面的就直接用endpoint就能获得配置文件中的值


方式2:配置类(推荐)

如果配置信息很多,或者配置信息需要在不同的地方使用,那配置类是一个不错的选择,我来给大家举一个例子吧:


@ConfigurationProperties(prefix = "weibo")
@Data
@Component
public class WeiboInfoComponent {
private String clientId;
private String clientSecret;
private String redirectUri;
}

其中@Data是lombok的注解,如果你没有用lombok,那你可以创建这几个属性的get以及set方法就可以了,然后@ConfigurationProperties(prefix = "weibo")注解中的prefix属性是前缀,等会我把配置文件中的内容贴出来,你就能看懂了,如果你没有前缀,那就可以直接使用@ConfigurationProperties,里面不用加参数就行,然后@Component是把当前配置类交给spring管理,这样我们就可以直接注入该配置类,然后在任何地方都可以使用了,我让大家看一下我的application.yml配置文件中是怎么写的,如下:


在这里插入图片描述 至于前缀,大家如果还没有明白的话,我再来给大家举一个例子:


在这里插入图片描述 然后大家还需要注意的一点是配置类中的属性名称和配置文件中名称的关系,其中配置类中使用小驼峰命名法,而配置文件中的名称使用-分隔多个单词,例如:


在这里插入图片描述 现在我们来说如何使用,当你需要使用属性值的时候,直接将配置类注入,然后使用getXXX()方法将数据取出来就可以了,我来用上面一直在说的WeiboInfoComponent给大家举一个例子,如下:


在这里插入图片描述


方法3:使用@Value注解结合静态变量

直接上例子吧:


@Component
public class ConstantPropertiesUtils implements InitializingBean {
// 读取配置文件内容
@Value("${aliyun.sms.file.accessKeyId}")
private String accessKeyId;
@Value("${aliyun.sms.file.accessKeySecret}")
private String accessKeySecret ;
@Value("${aliyun.sms.file.signName}")
private String signName ;
@Value("${aliyun.sms.file.templateCode}")
private String templateCode ;
// 定义公开静态变量
public static String ACCESS_KEY_ID;
public static String ACCESS_KEY_SECRET;
public static String SIGN_NAME;
public static String TEMPLATE_CODE;
// 当spring加载之后就会执行本方法
@Override
public void afterPropertiesSet() throws Exception {
// 给上述静态常量赋值
ACCESS_KEY_ID = accessKeyId;
ACCESS_KEY_SECRET = accessKeySecret;
SIGN_NAME = signName;
TEMPLATE_CODE = templateCode;
}
}

当项目启动之后,spring扫描到我们这个类,之后会先给下面的几个私有属性赋值,然后就会就会执行InitializingBean接口中的afterPropertiesSet方法,所以我们可以在这个方法中将私有属性的值赋给对应的静态变量,之后我们可以直接使用类名.静态变量名来使用配置文件中的值,至于@Value注解我在方法1中已经说过了,现在来让大家看一下application.properties配置文件中是怎么写的:


在这里插入图片描述 对于使用的话,相比于方法2稍微简单一点,也就是可以直接使用类名.静态变量名来使用配置文件中的值就可以了,如下:


在这里插入图片描述


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42449963/article/details/112689285

随机推荐

12月份学习小结

学习报告2020-12-31学习报告:第七期时间周期:12月1日-12月31日姓名、专业:王啊强-控制科学与工程一.内容(1)本月...

W_a_qiang 阅读(150)

字符设备注册

如我们提过的,内核在内部使用类型structcdev的结构来代表字符设备.在内核调用你的设备操作前,你编写分配并注册一个或几个这些结构.[11]11为此,你的代码应当包含<linux/cdev....

苹果电脑管家 阅读(497)

3GPP TS 38.321 V15.6.0 (2019-06)

3rdGenerationPartnershipProject;TechnicalSpecificationGroupRadioAccessNetwork;NR;MediumAccessControl...

Tech-Focus 阅读(589)

.ren年末特别企划:《2020年.ren溢价域名排行榜》

时间过得好快,还有不到几天的时间,我们就要和2020说再见了~.ren也陪大家一起走过了难忘的2020年。这一年里,感谢大家的支持和厚爱,让.r...

域名国家工程研究中心 阅读(662)