精通SpringBoot——第十一篇:使用自定义配置
今天这篇文章给大家介绍自定义配置的两种方式
第一式: 使用@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 {
@NestedConfigurationProperty
public 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: OneAPP
account:
username: Lensen
password: Orcl
age: 22
two-app:
welcome:
message: welcome to lensen's bolg
person: 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 {
@Autowired
private OneAppConfig oneAppConfig;
@Autowired
private 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, 回车
也可以自己指定文件,只需在类上加上注解@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
测试结果:
如果配置文件是yml格式的,则要使用YamlPropertiesFactoryBean来加载并设置到PropertySourcesPlaceholderConfigurer中
// 加载YML格式自定义配置文件
@Bean
public 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的潇洒人生。 关注了也不一定更新,更新就不得了了。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
[雪峰磁针石博客]flask构建自动化测试平台3-模板
3-模板 理想情况下,前端和后端组件之间的完全隔离。我们可以在很大程度上使用Jinja来实现这一目标。 到本章将扩展我们的应用程序,为所选出版物显示不止一个标题。我们将为每个出版物显示多篇文章,每篇文章都链接到原始文章,我们的逻辑和视图组件将在很大程度上分开。在本章中,我们将介绍以下主题: 介绍Jinja Jinja模板使用 本文最新版本 介绍Jinja Jinja是一个Python模板引擎。它允许我们轻松定义由Python填充的动态HTML块。即使对于多个静态网页的网站,HTML模板也很有用有,如修改页眉和页脚。Flask基于Jinja,尽管可以单独使用Jinja,但Jinja仍然是Flask的固有部分。Flask和Flask提供了几种直接与Jinja工作的方法。默认情况下,Flask假定你存储了所有的Jinja模板位于您的应用程序的templates子目录中。 Jinja模板使用 home.html <html> <head> <title>Headlines</title> </head> <body> &l...
-
下一篇
[雪峰磁针石博客]flask构建自动化测试平台6-交互式犯罪地图
6-交互式犯罪地图 本章将介绍以下主题: mysql 创建犯罪地图 本文最新版本 代码地址 安装mysql # apt-get install mysql-server # pip3 install pymysql # python db_setup.py # 创建数据库 dbconfig.py test = False db_user = 'root' db_password = '654321_' db_setup.py import pymysql import dbconfig connection = pymysql.connect(host='localhost', user=dbconfig.db_user, passwd=dbconfig.db_password) try: with connection.cursor() as cursor: sql = "CREATE DATABASE IF NOT EXISTS crimemap" cursor.execute(sql) sql = """CREATE TABLE IF NOT EXISTS crimemap.cr...
相关文章
文章评论
共有0条评论来说两句吧...