武邑县网站建设公司,wordpress 百度地图插件,制作网线的步骤,变装chinacd wordpress学习目标#xff1a; 1.熟悉Spring Boot全局配置文件的使用 2.掌握Spring Boot配置文件属性值注入 3.熟悉Spring Boot自定义配置 4.掌握Profile多环境配置 5.了解随机值设置以及参数间引用
1.全局配置文件 Spring Boot使用 application.properties 或者application.yaml 的文…学习目标 1.熟悉Spring Boot全局配置文件的使用 2.掌握Spring Boot配置文件属性值注入 3.熟悉Spring Boot自定义配置 4.掌握Profile多环境配置 5.了解随机值设置以及参数间引用
1.全局配置文件 Spring Boot使用 application.properties 或者application.yaml 的文件作为全局配置文件该文件一般会选择 放在resources目录下 Spring Boot配置文件的命名以其格式分为两大类 application.properites以键值对的形式存在的文件其要求严格keyvalue注意 value 后面不要留空格。 application.yaml或application.ymlyaml文件也是yml文件yml文件层次感很强利用缩进表示层级关系同样也是键值对的形式key: value 最终形成树形结构。
1.1.properties配置文件 使用Spring Initalizr方式构建Spring Boot项目式会在resources目录下自动生成一个空的application.properties文件Spring Boot项目启动时会自动加载application.properties文件。
可以定义Spring Boot项目的相关属性
# 1、服务器Server
# 服务器IP绑定地址如果主机有多个网卡可以绑定一个IP地址
server.addresslocalhost
# Spring Boot应用监听端口
server.port8080
# Spring Boot应用的上下文
server.servlet.context-path/spboot01
# 会话过期时间,如果未指定持续时间后缀则以秒为单位
server.servlet.session.timeout30
1.2.yaml或yml配置文件 application.yaml配置文件的工作原理和application.properties是一样的只不过yaml格式配置文件看起来更简洁一些。 YAML文件的扩展名可以使用 .yaml 或者 .yml 。 application.yml文件使用key:(空格) value格式配置属性使用缩进控制层级关系
1.2.1.value值为普通数据类型
person:id: 1name: 张三isboy: true
1.2.2.value值为数组和单列集合 当YAML配置文件中配置的属性值为数组或单列集合类型时主要有两种书写方式缩进式写法和行内式写法。
1缩进式写法 通过“-空格属性值”的形式为属性赋值 person: hobby: - play - read - sleep 通过直接赋值并使用英文逗号,分隔属性值。 person: hobby: play, read, sleep 2行内式写法
在YAML 配置文件中还可以将上述缩进式写法简化为行内式写法。 person: hobby: [play,read,sleep] 使用行内式写法设置属性值时中括号[]是可以省略的程序会自动匹配校对属性的值。 person: hobby: play,read,sleep 1.2.3.value值为Map集合和对象
当YAML配置文件中配置的属性值为Map集合或对象类型时YAML配置文件格式同样可以分为两种书写方式缩进式写法和行内式写法。
1缩进式写法
按照YAML文件格式编写属性的赋值。 person: map: k1: value1 k2: value2 2行内式写法
属性值要用大括号{ } 包含。 person: map: {k1: value1,k2: value2} 2.配置文件属性值注入
2.1.ConfiggurationProperties注入属性
首先创建两个实体类 Pet 和 Person
public class Pet {private String name;private String type;// 并给上 Getter and Setter、toString()
}
Component
ConfigurationProperties(prefixperson)
public class Person {private Integer id;private String name;private Boolean isboy;private ListObject hobby;private MapString,Object map;private Pet pet;}
ConfigurationProperties(prefixperson)注解的作用是将配置文件中以 person 开头的属性值通过setter方法注入实体类对应属性中
然后在 application.yml 配置文件中编写需要对 Person 类设置的配置属性。
person:id: 1name: 张三isboy: truehobby:play,read,sleepmap:k1: value1k2: value2pet:name: amytype: cat
最后在测试类中引入 Person 实体类 Bean并进行输出测试。 Autowiredpublic Person person;Testpublic void demo(){System.out.println(person);} 2.2.Value注入属性
Value注解是 Spring 框架提供的用来读取配置文件中的属性值并逐个注入 Bean 对象的对应属性中
在 application.yml 配置文件中添加属性值初始化的配置。
student:sid: 1sname: 李四hobby: play,read,writefamily: father,mothermaps:k1: value1k2: value2pet:type: catname: jerry
然后创建Student实体类并使用Value的方式实现属性注入
Component
public class Student {Value(${student.sid})private Integer sid;Value(${student.sname})private String sname;Value(${student.hobby})private ListObject hobby;Value(${student.family})private String[] family;private MapString,Object maps;private Pet pet;//Getter、Setter、toString//不用Getter、Setter方法
}
最后在测试类中引入Student实体类Bean并进行输出测试。 Autowiredpublic Student student;Testpublic void demo(){System.out.println(student);} 有看到Value注解方式跟ConfigurationProperties有不同 3.Spring Boot自定义配置 几乎所有的配置都可以写在全局配置文件中Spring Boot 会自动加载全局配置文件从而免除我们手动加载的烦恼。但是如果我们自定义配置文件Spring Boot 是无法识别这些配置文件的此时就需要我们手动加载。
3.1.使用PropertySource加载配置文件
在resource目录下新建一个SmsSender.properties自定义配置文件在该配置文件中编写需要设置的配置属性
sms-sender.defaultConnectTimeout10000
sms-sender.defaultReadTimeout10000
sms-sender.productDysmsapi
sms-sender.domaindysmsapi.aliyuncs.com
sms-sender.regionIdcn-changsha
sms-sender.endPointNamecn-changshasms-sender.access-key-idLDSIEEK2hh34P8Hx
sms-sender.access-key-secretntUXt8MMYl7345619JrvJNDNTwslrg
## 一般有多个键值对此处用基本值示例
sms-sender.sign-name-jsonzking
sms-sender.template-codeSMS_147419388
## 一般有多个键值对此处用基本值示例
sms-sender.template-param-jsonwww.zking.com## 选填的属性
sms-sender.sms-up-extend-code888
sms-sender.out-id
在com.zking.spboot01.config包下创建一个配置类SmsSenderConfiguration
/*** 阿里云短信发送器配置类*/
// 自定义配置类
Configuration
// 开启对应配置类的属性注入功能
EnableConfigurationProperties(SmsSenderConfiguration.class)
// 指定自定义配置文件位置和名称
PropertySource(classpath:SmsSender.properties)
// 指定配置文件注入属性前缀
ConfigurationProperties(prefix sms-sender)
Data
public class SmsSenderConfiguration {/*** 选填。连接主机的超时时间(单位:毫秒) 。*/private String defaultConnectTimeout;/*** 选填。从主机读取数据的超时时间(单位:毫秒) 。*/private String defaultReadTimeout;/*** 固定值。短信API产品名称短信产品名固定无需修改。*/private String product;/*** 固定值。短信API产品域名接口地址固定无需修改。*/private String domain;/*** 固定值。服务器区域ID,暂时不支持多region请勿修改。*/private String regionId;/*** 固定值。服务器端点名称(请勿修改)。*/private String endPointName;/*** 必填。开发者accessKeyId。*/private String accessKeyId;/*** 必填。开发者accessKeySecret。*/private String accessKeySecret;/*** 必填。短信签名。*/private String signNameJson;/*** 必填。短信模板ID发送国际/港澳台消息时请使用国际/港澳台短信模版。*/private String templateCode;/*** 选填。短信模板变量替换JSON串.* 友情提示:如果JSON中需要带换行符,请参照标准的JSON协议。如模板内容为亲爱的${name},您的验证码为${code}时,此处的值为 {\name\:\Tom\, \code\:\123456\} 。* 友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败。*/private String templateParamJson;/*** 选填。上行短信扩展码,扩展码字段控制在7位或以下无特殊需要此字段的用户请忽略此字段。*/private String smsUpExtendCode;/*** 选填。外部流水扩展字段。outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者。*/private String outId;
}
最后在测试类中引入SmsSenderConfiguration类型的Bean并进行输出测试。 Autowiredpublic SmsSenderConfiguration smsSenderConfiguration;Testpublic void demo(){System.out.println(smsSenderConfiguration);} 3.2.使用ImportResource加载XML配置文件
lmportResource注解标注在一个配置类上 通常放置在应用启动类上使用时需要指定 XML 配置文件的路径和名称。
在 com.zking.spboot01.config 包下创建 SmsSenderConfiguration类。该类目前没有添加任何配置和注解因此还无法正常被Spring Boot扫描识别。
Data
public class SmsSenderConfiguration {/*** 选填。连接主机的超时时间(单位:毫秒) 。*/private String defaultConnectTimeout;/*** 选填。从主机读取数据的超时时间(单位:毫秒) 。*/private String defaultReadTimeout;/*** 固定值。短信API产品名称短信产品名固定无需修改。*/private String product;/*** 固定值。短信API产品域名接口地址固定无需修改。*/private String domain;/*** 固定值。服务器区域ID,暂时不支持多region请勿修改。*/private String regionId;/*** 固定值。服务器端点名称(请勿修改)。*/private String endPointName;/*** 必填。开发者accessKeyId。*/private String accessKeyId;/*** 必填。开发者accessKeySecret。*/private String accessKeySecret;/*** 必填。短信签名。*/private String signNameJson;/*** 必填。短信模板ID发送国际/港澳台消息时请使用国际/港澳台短信模版。*/private String templateCode;/*** 选填。短信模板变量替换JSON串.* 友情提示:如果JSON中需要带换行符,请参照标准的JSON协议。如模板内容为亲爱的${name},您的验证码为${code}时,此处的值为 {\name\:\Tom\, \code\:\123456\} 。* 友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败。*/private String templateParamJson;/*** 选填。上行短信扩展码,扩展码字段控制在7位或以下无特殊需要此字段的用户请忽略此字段。*/private String smsUpExtendCode;/*** 选填。外部流水扩展字段。outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者。*/private String outId;
}
在resources目录下新建applicationContext.xml自定义配置文件。
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdbean idsmsSenderConfiguration classcom.zking.spboot01.config.SmsSenderConfigurationproperty namedefaultConnectTimeout value10000 /property namedefaultReadTimeout value10000 /property nameproduct valueDysmsapi /property namedomain valuedysmsapi.aliyuncs.com /property nameregionId valuecn-changsha /property nameendPointName valuecn-changsha /property nameaccessKeyId valueLDSIEEK2hh34P8Hx /property nameaccessKeySecret valuentUXt8MMYl7345619JrvJNDNTwslrg /property namesignNameJson valuezking /property nametemplateCode valueSMS_147419388 /property nametemplateParamJson valuewww.zking.com /property namesmsUpExtendCode value888 /property nameoutId value //bean
/beans
由于Spring Boot 默认是无法识别XML 配置文件的为了保证XML配置文件生效需要在项目启动类Spboot02Application上添加ImportResource注解来指定XML文件位置。 SpringBootApplication
ImportResource(classpath:applicationContext.xml)
public class Spboot01Application {public static void main(String[] args) {SpringApplication.run(Spboot01Application.class, args);}
}
最后在测试类中引入 SmsSenderConfiguration 类型的 Bean并进行输出测试。 Autowiredpublic SmsSenderConfiguration smsSenderConfiguration;Testpublic void demo(){System.out.println(smsSenderConfiguration);} 4.Profile多环境配置
4.1.Profile文件方式 application-dev.yml # 开发环境配置文件 application-test.yml # 测试环境配置文件 application-prod.yml # 生产环境配置文件 application.yml # 全局配置文件 在 resources 目录下的全局配置文件 application.yml 中配置 spring.profiles.active 属性选择性激活 Profile文件设置。 spring:profiles:active: prod # 激活生产环境配置文件 在application-dev.yml下每个下面都加上对应的 application:name: spboot-dev 在application-prop.yml下 application:name: spboot-prod 在application-text.yml下 application:name: spboot-test启动Spring Boot 项目并查看控制台输出效果。 4.2.Profile注解方式
在 com.zking.spboot01.config 包下创建一个用于配置数据库的接口文件 IDBConnector 。
public interface IDBConnector {String confiure();
}在 com.zking.spboot01.config 包下创建实现了 IDBConnector 接口的 DBConnectorDev类并重写 configure()方法模拟连接配置不同的数据库环境。
Configuration
Profile(dev)
public class DBConnectorDev implements IDBConnector{Overridepublic String confiure() {String msgDEV;System.out.println(msg);return msg;}
}
最后运行 Autowiredpublic IDBConnector dbConnectorDev;Testpublic void demo(){System.out.println(dbConnectorDev.confiure());} 5.参数间引用
在 Spring Boot 的全局配置文件application.yml中
person:id: 1name: 张三isboy: truehobby:play,read,sleepmap:k1: value1k2: value2pet:name: amytype: cat
student:sid: 1sname: ${person.name}hobby: play,read,writefamily: father,mothermaps:k1: value1k2: value2pet:type: catname: jerry
Student中的sname引用的是person中的name我们运行一下看Student中的sname是不是person的name Autowiredpublic Student student;Testpublic void demo(){System.out.println(student);} 这是最基本的引用方式了
本期就到这里结束了再见ヾ(≧▽≦*)o