springboot的yaml属性配置文件注入

简介: SpringBoot中默认的从application.properties文件中加载参数我们通常把springboot中资源目录下的application.properties文件改成application.yaml,因为yaml文件更具有层次感。

SpringBoot中默认的从application.properties文件中加载参数

我们通常把springboot中资源目录下的application.properties文件改成application.yaml,因为yaml文件更具有层次感。YAML文档也可以比较好的被支持, YamlPropertiesFactoryBean会将yaml文件当初properties来解析的。

有时候我们会把一些属性写在配置文件yaml中然后调用

使用@value 进行属性的注入

这是我的yaml文件   

写法要注意下:属性名:(空格)属性值    不够IDEA的强大功能会提示你是否写错,很明显吧,没写空格属性名是不会变色的

新建一个测试的controller   仔细看@Value的写法 ("${上一级的属性名.属性名}")

@RestController

public classHelloController {

@Value("${boy.sex}")

private String sex;

@Value("${boy.age}")

private String age;

@GetMapping("/hello")

public String hello(){

return sex+age;

}

测试的结果


上面是直接通过@Value把属性值注入进来,在开发过程中通常不会直接在Controller中注入,通常注入会在实体类entity中

@Component   //用于后面controller的属性注入,声明为一个bean

public  classBoy {

@Value("${boy.sex}")

private String sex;

@Value("${boy.age}")

private String age;

set和get方法...

}

controller:看起来这样写没问题,不会报错

@RestController

public class HelloController {

@Autowired

private Boy boy;

String A=boy.getSex();

String B=boy.getAge();

@GetMapping("/hello")

publicString hello(){

return A+B;

}

运行后控制台报错:

主要错误为Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException:大概意思是Bean通过构造函数实例化嵌套异常,异常名为org.springframework.beans.BeanInstantiationException

怎么改呢

需要把get方法写进方法体内

@RestController

public class HelloController {

@Autowired

private Boy boy;

@GetMapping("/hello")

public String hello(){

String A=boy.getSex();

String B=boy.getAge();

return A+B;

}

再次运行,错误消失,得到我们想要的结果


使用@ConfigurationProperties注解简化

用@Value只要有一个属性就要写一次,但数量多了就会变得很麻烦,用@ConfigurationProperties的话会自动注入,设置要前缀prefix

@Component

@ConfigurationProperties(prefix ="boy")

public  class Boy {

private String sex;

private String age;

set和get方法...

}

注意,实体类的属性名和yaml的属性名要对应相同,不然获取到的值就为null,yaml多余的属性不影响实体类的属性

由于你实体类只有sex和age属性,所以只会注入sex和age

多层次的前缀prefix写法

@ConfigurationProperties(prefix ="human.boy")

只需要上一级的属性.下一级属性,以此类推,最底层属性要实体类entity属性

目录
相关文章
|
1月前
|
Java 数据库连接 Maven
springBoot:项目建立&配置修改&yaml的使用&resource 文件夹(二)
本文档介绍了如何创建一个基于Maven的项目,并配置阿里云仓库、数据库连接、端口号、自定义启动横幅及多环境配置等。同时,详细说明了如何使用YAML格式进行配置,以及如何处理静态资源和模板文件。文档还涵盖了Spring Boot项目的`application.properties`和`application.yaml`文件的配置方法,包括设置数据库驱动、URL、用户名、密码等关键信息,以及如何通过配置文件管理不同环境下的应用设置。
109 1
|
9天前
|
Java 数据库连接 数据库
springboot启动配置文件-bootstrap.yml常用基本配置
以上是一些常用的基本配置项,在实际应用中可能会根据需求有所变化。通过合理配置 `bootstrap.yml`文件,可以确保应用程序在启动阶段加载正确的配置,并顺利启动运行。
16 2
|
9天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
21 2
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
54 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
20天前
|
Java Spring 容器
SpringBoot读取配置文件的6种方式,包括:通过Environment、@PropertySource、@ConfigurationProperties、@Value读取配置信息
SpringBoot读取配置文件的6种方式,包括:通过Environment、@PropertySource、@ConfigurationProperties、@Value读取配置信息
43 3
|
1月前
|
druid Java Maven
|
1月前
|
Java 测试技术 Spring
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
这篇文章介绍了Spring Boot中配置文件的语法、如何读取配置文件以及如何通过静态工具类读取配置文件。
54 0
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
|
1月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
62 2
|
2月前
|
关系型数据库 MySQL Go
go抽取mysql配置到yaml配置文件
go抽取mysql配置到yaml配置文件
|
2月前
|
XML Java C语言
yaml语法格式,springboot中yaml的使用
本文介绍了YAML的语法格式和数据类型表示方法,并详细讲解了如何在Spring Boot中使用YAML,包括@ConfigurationProperties注解及Bean的创建、编写Controller、配置application.yaml配置文件,以及在pom.xml中开启YAML提示。

热门文章

最新文章

下一篇
无影云桌面