application.properties 赋值

映射名 + 属性

如:student.name / student.age

PropertiesConfiguration 注释 乱码_spring

application.yml 赋值

PropertiesConfiguration 注释 乱码_配置文件_02

@value 注解 赋值

PropertiesConfiguration 注释 乱码_java_03

无论什么类型,都得加上 “”

绑定

示例

@ConfigurationProperties(yml/properties)

@Value(“xx”)

注解

@ConfigurationProperties

@Value

注值

批量注入

单个

松散语法

支持

不支持

SpEL(spring表达式)

不支持

支持

JSR303数据校验

支持

不支持

注入复杂类型

支持复杂类型

不支持复杂类型

简单类型

8个 + String + Date

什么是松散语法

例如:属性名字为 userName ,松散写法为:user-name,其在配置文件中等价

什么是SpEL

简言之,就是写取出已在配置文件中赋值过的,属性的值
例如:在 properties中配置了

student:
    uname: kj

使用SpEL 可以在@Value 中取出。格式为:“${student.name}”

SpEL

这样写可以取得到properties 中的值

PropertiesConfiguration 注释 乱码_赋值_04

JSR303数据校验

注解配置

PropertiesConfiguration 注释 乱码_spring boot_05

观察检测结果

PropertiesConfiguration 注释 乱码_配置文件_06

@PropertySource

系统默认会加载application.properties/application.yml 文件的数据,但如果想要获取非系统默认配置文件中的值,就需要@PropertySource

例子:

  1. 将application.properties 改名为 -> conf.properties
  2. 在JavaBean 类中加上 @PropertySource(“value={“classpaht:conf.properties”}”) 就可以让系统识别该文件

注意:该注解只会识别 .properties 后缀的文件,不能够识别 .yml文件

ImportResource

spring boot 自动装配/自动配置
spring 等配置文件<bean>,默认会被spring boot 自动给配置好</bean>

如果要自己编写 spring 等配置文件,spring boot 能否识别?

默认是不识别的。如果需要系统识别,则需要在spring boot 主配置类上,通过@ImportResource 指定配置文件的路径

PropertiesConfiguration 注释 乱码_spring_07

加上了这一句之后,系统就能识别spring 的配置文件了


但是不推荐手写spring 配置文件
配置:xml 配置文件,通过注解配置
spring boot 推荐使用注解方式进行配置:写一个类,@Configuration @Bean

加载spring 配置类,通过@Configuration 和 @Bean

  1. 创建一个 spring.xml 并配置
  2. PropertiesConfiguration 注释 乱码_spring boot_08

  3. 在测试类中 通过@Autowired 引入
  4. PropertiesConfiguration 注释 乱码_赋值_09

  5. 创建一个配置类 AppConfig.java,在类的前面配上注解 @Configuration;实现类下的方法,这个方法对应配置类中声明的id名字
  6. PropertiesConfiguration 注释 乱码_配置文件_10

  7. 调用测试类测试,通过解析xml 文件,对 中的id 的字符串的映射,来确定执行的方法。
  8. PropertiesConfiguration 注释 乱码_java_11

  9. 测试成功
  10. PropertiesConfiguration 注释 乱码_java_12

随机占位符

PropertiesConfiguration 注释 乱码_java_13

使用方法

  1. 在properties/yml 中给属性赋值时可以使用
    例如:
student:
		name: ${random.value} #表示随机字符串
  1. yml 调用 properties 中的值时
properties:
		student.user.name=wuyifan
	yml:
		student:
			name: ${student.user.name}

就可以调用 properties 中的值了

深入

如果传值失败,可以设置默认值
例如:

student:
		name: {student.user.name:Van Darkhomle}