服装网站建设的技术可行性,网络策划是什么意思,工地找活app排行榜,各大网站排名文章目录前言一、配置文件及自动配置原理1、配置文件2、yaml1、注解注入方式给属性赋值2、yaml给实体类赋值3、Properties给属性赋值二、springboot的多环境配置四、自动配置总结前言
1、自动装配原理 2、多种方式给属性赋值 3、多环境配置 4、自动配置 一、配置文件及自动配置…
文章目录前言一、配置文件及自动配置原理1、配置文件2、yaml1、注解注入方式给属性赋值2、yaml给实体类赋值3、Properties给属性赋值二、springboot的多环境配置四、自动配置总结前言
1、自动装配原理 2、多种方式给属性赋值 3、多环境配置 4、自动配置 一、配置文件及自动配置原理
1、配置文件
springboot使用一个全局的配置文件配置文件名称是固定的
application.properties 语法结构 key valueapplication.yml 语法结构 key 空格 value
配置文件的作用修改springboot自动配置的默认值因为Spring Boot在底层都给我们自动配置好了
2、yaml
标记语言 以前的配置文件大多数使用xml来配置比如一个简单的端口配置 properties和yaml配置的区别 yaml
# 普通的key - value
name: bwy# 对象
student:name: bwyage: 24# 行内写法
student: {name: bwy,age: 24}# 数组
pets:- cat- dog- pig# 行内写法
pets: [cat,dog,pig]properties
# properties只能保存键值对# 普通的key - value
namebwystudent.name bwy
student.age 241、注解注入方式给属性赋值
实体类
Component
public class Dog {Value(旺财)private String name;Value(3)private Integer age;public Dog(String name, Integer age) {this.name name;this.age age;}public Dog() {}public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}Overridepublic String toString() {return Dog{ name name \ , age age };}
}测试类
SpringBootTest
class HelloworldApplicationTests {Autowiredprivate Dog dog;Testvoid contextLoads() {System.out.println(dog);}
}测试结果
2、yaml给实体类赋值
实体类
Component
ConfigurationProperties(prefix person)
public class Person {private String name;private Integer age;private Boolean happy;private Date birth;private MapString,Object maps;private ListObject lists;private Dog dog;Overridepublic String toString() {return Person{ name name \ , age age , happy happy , birth birth , maps maps , lists lists , dog dog };}public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public Boolean getHappy() {return happy;}public void setHappy(Boolean happy) {this.happy happy;}public Date getBirth() {return birth;}public void setBirth(Date birth) {this.birth birth;}public MapString, Object getMaps() {return maps;}public void setMaps(MapString, Object maps) {this.maps maps;}public ListObject getLists() {return lists;}public void setLists(ListObject lists) {this.lists lists;}public Dog getDog() {return dog;}public void setDog(Dog dog) {this.dog dog;}public Person(String name, Integer age, Boolean happy, Date birth, MapString, Object maps, ListObject lists, Dog dog) {this.name name;this.age age;this.happy happy;this.birth birth;this.maps maps;this.lists lists;this.dog dog;}public Person() {}
}可以通过这个配置产生提示如果不配置使用了ConfigurationProperties这个注解就会爆红 添加依赖即可不添加也不会运行出错
ConfigurationProperties的作用 将配置文件中配置的每一个属性的值映射到这个组件中 告诉springboot将本类中的所有属性和配置文件中相关的配置进行绑定 参数prefix “person” 将配置文件中的person下面的所有属性一一对应
只有这个组件是容器中的组件才能使用容器提供的ConfigurationProperties功能因此实体类上还需要添加注解Component
yaml配置文件 注意 yaml文件中不能有大写
person:name: bwyage: 24happy: truebirth: 2023/3/6maps: {k1: 60, k2: 80}lists:- code- music- picturedog:name: 旺财age: 3测试类
SpringBootTest
class HelloworldApplicationTests {Autowiredprivate Person person;Testvoid contextLoads() {System.out.println(person);}
}测试结果
3、Properties给属性赋值
加载指定配置文件 PropertySource(value “classpath:bwy.properties”)
实体类 只测试name属性
Component
//ConfigurationProperties(prefix person)
//加载指定配置文件
PropertySource(value classpath:bwy.properties)
public class Person {Value(${name)private String name;……}properties配置文件
name bwy测试类同上 运行结果 松散绑定比如yml中写的last-name这个和lastName是一样的-后面跟着的字母默认是大写的这就是松散绑定JSR303数据校验判断输入的格式是否合法这个就是我们可以在字段上增加一层过滤器验证可以保证数据的合法性Validated
二、springboot的多环境配置
spring.profiles.active可以选择激活哪一个配置文件
#spring.profiles.activedev
spring.profiles.activetestymal配置
server:port: 8081
spring:profiles:active: dev
---
server:port: 8082
spring:profiles: dev
---
server:port: 8083
spring:profiles: test
四、自动配置
在配置文件中能配置的东西都存在一个固有的规律 xxxAutoConfiguration默认值 xxxProperties 和配置文件绑定我们就可以使用自定义的配置了
springboot启动会加载大量的自动配置类看我们需要的功能有没有在SpringBoot默认写好的自动配置类当中看自动配置类中到底配置了哪些组件只要我们要用的组件存在在其中我们就不需要手动配置了给容器中自动配置类添加组件的时候会从properties类中获取某些属性我们只需要在配置文件中指定这些属性的值即可XXXAutoConfiguration自动配置类给容器中添加组件XXXProperties封装配置文件中相关属性
总结
配置yml和配置properties都可以获取到值强烈推荐yml如果在某个业务中只需要获取配置文件中的某个值可以使用value如果我们编写了一个JavaBean来和配置文件进行映射就直接使用configurationProperties