精通Spring Boot——第十一篇:使用自定义配置

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

今天这篇文章给大家介绍自定义配置的两种方式 第一式: 使用@ConfigurationProperties,且看代码

package com.developlee.customconfig.config;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.context.annotation.Configuration;/*** @author Lensen* @desc* @since 2018/8/22 12:59*/
@Configuration
@ConfigurationProperties(prefix = "one-app")
public class OneAppConfig {@NestedConfigurationPropertypublic Account account = new Account();public String appName;public Account getAccount() {return account;}public void setAccount(Account account) {this.account = account;}public String getAppName() {return appName;}public void setAppName(String appName) {this.appName = appName;}public class Account {private String username;private String password;private String age;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;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}}
}

很明显,这就是我们要在properties文件中要配置的配置项。 再看第二种方式

/*** @author Lensen* @desc* @since 2018/8/22 13:19*/
@Configuration
public class TwoAppConfig {@Value("${two-app.welcome.message}")public String twoAppWelcomeMessage;@Value("${two-app.welcome.person}")public String twoAppWelcomePerson;public String getTwoAppWelcomeMessage() {return twoAppWelcomeMessage;}public void setTwoAppWelcomeMessage(String twoAppWelcomeMessage) {this.twoAppWelcomeMessage = twoAppWelcomeMessage;}public String getTwoAppWelcomePerson() {return twoAppWelcomePerson;}public void setTwoAppWelcomePerson(String twoAppWelcomePerson) {this.twoAppWelcomePerson = twoAppWelcomePerson;}
}

这个就简单粗暴啦。没有第一种方式结构那么清晰,具体怎么使用,完全取决于项目配置项的关联关系和复杂度,需要大家根据实际情况权衡。 接下来我写了个简单的测试类,来获取我们的配置信息 先看配置文件:

one-app:app-name: OneAPPaccount:username: Lensenpassword: Orclage: 22two-app:welcome:message: welcome to lensen's bolgperson: LENSEN

一个简单的Controller类

package com.developlee.customconfig.controller;import com.developlee.customconfig.config.OneAppConfig;
import com.developlee.customconfig.config.TwoAppConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author Lensen* @desc* @since 2018/8/22 16:40*/
@RestController
public class AppController {@Autowiredprivate OneAppConfig oneAppConfig;@Autowiredprivate TwoAppConfig twoAppConfig;@GetMapping("/hello")public ResponseEntity getConfig() {String str1 = "oneAppConfig: " + oneAppConfig.getAppName() + oneAppConfig.getAccount().getUsername()+ oneAppConfig.getAccount().getPassword() + oneAppConfig.getAccount().getAge();String str2 = "twoAppConfig: " + twoAppConfig.getTwoAppWelcomePerson() + twoAppConfig.getTwoAppWelcomeMessage();return new ResponseEntity(str1 +"~~~~~~~"+ str2, HttpStatus.OK);}
}

在地址栏输入http:localhost:8080/hello, 回车 image 也可以自己指定文件,只需在类上加上注解@PropertySource注解就好了~~

@Configuration
@PropertySource("classpath:my.properties")
public class ThreeConfig {@Value("${my.name}")private String myName;public String getMyName() {return myName;}public void setMyName(String myName) {this.myName = myName;}
}

my.properties文件内容:

my.name=developlee

测试结果: image

如果配置文件是yml格式的,则要使用YamlPropertiesFactoryBean来加载并设置到PropertySourcesPlaceholderConfigurer中

// 加载YML格式自定义配置文件@Beanpublic static PropertySourcesPlaceholderConfigurer properties() {PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();yaml.setResources(new FileSystemResource("config.yml"));//File引入
//		yaml.setResources(new ClassPathResource("youryml.yml"));//class引入configurer.setProperties(yaml.getObject());return configurer;

end... 浮躁的社会,浮躁的人生,唯有代码,宁静致远。(又开始装13了,见谅.....)

最后,以上示例代码可在我的github.com中找到。 我的个人公众号:developlee的潇洒人生。 关注了也不一定更新,更新就不得了了。

qrcode_for_gh_2bd3f44efa21_258

转载于:https://my.oschina.net/liululee/blog/2250330

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 高可用架构在业务层面的应用分析

MySQL 高可用架构在业务层面的应用分析 http://mp.weixin.qq.com/s?__bizMzAxNjAzMTQyMA&mid208312443&idx1&snf9a0d03dd9a1cf3b3575c0241291e421&scene22&srcidseLU5tmZumKLzwVBIHzM#rd http://mp.weixin.qq.com/s?__bizMzAxNjAzMTQyMA&mid20831244…

使用Expresso学习.net正则表达式

什么是RE?想必各位大大在做文件查找的时侯都有使用过万用字符”*”,比如说想查找在Windows目录下所有的Word文件时,你可能就会用”*.doc”这样的方式来做查找,因为”*”所代表的是任意的字符。RE所做的就是类似这样的功能,但其功…

数据结构与算法学习笔记之 从0编号的数组

数据结构与算法学习笔记之 从0编号的数组前言数组看似简单,但掌握精髓的却没有多少;他既是编程语言中的数据类型,又是最基础的数据结构;一个小问题:为什么数据要从0开始编号,而不是 从1开始呢?正…

JAVA四种基本排序总结

JAVA四种基本排序,包括冒泡法,插入法,选择法,SHELL排序法.其中选择法是冒泡法的改进,SHELL排序法是 插入法的改进.所以从根本上来说可以归纳为两种不同的排序方法:即:插入法&冒泡法一 插入法:遍历排序集合,每到一个元素时,都要将这个元素与所…

Windows 故障转移+Hyper-V 虚机自动迁移高 可用

Windows 故障转移Hyper-V 虚机自动迁移高 可用 Windows 故障转移Hyper-V 虚机自动迁移高... 1一、系统原理... 31.1 高效率的 VMbus 架构... 31.2 完美支持 Linux 系统... 4二、架构拓朴... 52.1 网络及系统架构拓朴... 52.2 域结构拓朴... 5三、实验资源列表... 63.1 网络设备…

MSSqlServer基础学习01

1.新建登陆用户名,须赋予数据库访问权限方可访问已有的数据库,可以参考如下图片转载于:https://www.cnblogs.com/MyVision/p/11242417.html

js,java时间处理

1.JS获取时间格式为“yyyy-MM-dd HH:mm:ss”的字符串 function getTimeStr(){var myDate new Date();var year myDate.getFullYear(); //获取完整的年份(4位,1970-????)var month myDate.getMonth(); //获取当前月份(0-11,0代表1月)month month > 9 ? month : &quo…

框架和模式

1.什么是模式? 模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。 Alexander给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题&#xff0c…

人月神话第三章

对于效率和概念的完整性来说,最好由少数干练的人员来设计和开发, 而对于大型系统, 则需要大量的人手, 以使产品能在时间上满足要求。 文章参照外科手术队伍对10个人的编程队伍进行专业化的角色分工。并为如何运作做出详细说明。…

评上了7月份的Microsoft MVP

昨天晚上觉得困,于是躺到床上去休息了一会儿,没想到醒来以后就发现了一封信,告诉我当选了7月份的MVP(我们的Cat Chen也同样当选了,园子里肯定还有其它朋友)。自从去年9月份登陆博客园以来,写技术…

javascript删除数组,索引出现问题解决办法。

var data [{ isRemove: 0, name: "项目1" },{ isRemove: 1, name: "项目2" },{ isRemove: 1, name: "项目3" },{ isRemove: 0, name: "项目4" },{ isRemove: 0, name: "项目5" },{ isRemove: 0, name: "项目6" }…

知识点 - 学习过程中积累

优化数据库查询访问&#xff1a;使用存储过程&#xff0c;利用连接池打开关闭数据库&#xff1b;操作数据是&#xff0c;尽量避免装箱&#xff1b;数据库中为<NULL>的字段&#xff0c;sql语句中用is null读取&#xff1b;开发复合控件的主要步骤&#xff1a;1&#xff09…

Mircosoft 正式把Windows Mobile改名为Windows Phone,你会因此而购买Windows Phone吗?

简介 本文讲述Windows Phone改名事件&#xff0c;以及Windows Phone发展历史和今后发展策略的想法。 事件 今天下班的时候看报纸&#xff0c;有一段新闻关于昨天(2009年10月6日)Mircosoft正式使用Windows Phone这个名字。我去到原先Windows Mobile的主页&#xff0c;已经全部由…

【课后服务】20181022切蛋糕

权当抛砖引玉吧&#xff0c;掌握记搜的方法最重要。 #include<iostream> #include<cstring> #include<cstdio> using namespace std; int n,m,k; bool book[21][21]; int cake[21][21]; int dp[21][21][21][21]; int yt(int x,int y,int w,int h)//返回蛋糕…

我也来记录我的一些开发心得和笔记!

博客园&#xff0c;我来了&#xff01; 转载于:https://www.cnblogs.com/rose2007/archive/2007/07/11/814435.html

经典vim插件功能说明、安装方法和使用方法介绍(已更新)

1 # 2 转载请注明出处: http://blog.csdn.net/tge7618291 http://nuoerlz.is-programmer.com 8 # 9 1. 查看 key 相关信息说明的命令 :help keycodes 10 11 # 12 2. ctags 13 (1). 帮助手册查看 14 :help usr_29 15 16 (2). 功能 17 ctags的功能, 只要在unix/lin…

【哈利波特】Sherbert Lemon对HP的解读之11

NINEScar FaceThe characteristics of Harry’s scar change considerably.PS/SS – BurningQUOTEHarry, who was starting to feel warm and sleepy, looked up at the High Table again. Hagrid was drinking deeply from his goblet. Professor McGonagall was talking to P…

Linux 下, npm i 老是被killed 已杀死

2019独角兽企业重金招聘Python工程师标准>>> node&#xff1a;v8.12.0 npm v6.4.1 npm i 安装到一半会报这样到错误&#xff0c;并终止&#xff1a; npm WARN deprecated socks1.1.10: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious …

(转)创建X509证书,并获取证书密钥的一点研究

创建X509证书&#xff0c;并获取证书密钥的一点研究 作者&#xff1a;肖波 个人博客&#xff1a;http://blog.csdn.net/eaglet ; http://www.cnblogs.com/eaglet 2007/7 南京 背景 服务器SSL数字证书和客户端单位数字证书的格式遵循 X.509 标准。 X.509 是由国际电信联盟&#…

css样式优先级计算规则

css样式的优先级分为引入优先级和声明优先级。 引入优先级 引入样式一般分为外部样式&#xff0c;内部样式&#xff0c;内联样式。 外部样式&#xff1a;使用link引入的外部css文件。 内部样式&#xff1a;使用style标签书写的css样式。 内联样式&#xff1a;直接书写在html标签…