SpringBoot如何将属性写在配置文件中

SpringBoot中如何动态给属性赋值

非动态赋值的缺点

@RestController  //保证返回的数据转化为JSON
public class JDBCController {
	
	private String username;	//定义数据库用户名
	private String password;	//定义数据库密码
	
	@RequestMapping("/getMsg")
	public String getMsg() {
		
		this.username = "root";
		this.password = "root";
		return username+"|"+password;
	}
}

上面这种方式将配置信息,通过代码的形式写死到代码中,这样的话程序的耦合性高,不便扩展

动态赋值

# yml 文件
jdbc:
 username: root
 password: root

可以在yml配置文件中书写配置信息,然后通过spel表达式来动态赋值,注意这时候的JDBC只是一个前缀

@RestController //保证返回的数据转化为JSON
public class JDBCController {
  
  //1.需求:利用YML配置文件的信息为属性赋值
  //@Value作用: 从spring容器中找到具体的key,为属性赋值.
  @Value("${jdbc.username}") //spel表达式 spring提供
  private String username;	//定义数据库用户名
  
  @Value("${jdbc.password}")
  private String password;	//定义数据库密码
  
  @RequestMapping("/getMsg")
  public String getMsg() {
  	
  	this.username = "root";
  	this.password = "root";
  	return username+"|"+password;
  }
  
  @RequestMapping("/getMsgValue")
  public String getMsgValue() {
  	
  	return username+"|"+password;
  }	
}

但是有时某些配置可能需要很多的属性信息.如果这时利用@Value的方式赋值.则必然导致代码冗余.可读性差.这时就需要对动态赋值进行批量操作

批量动态赋值

1.引入依赖

		<!--添加属性注入-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>

2.通过@ConfigurationProperties注解引入

@RestController
@ConfigurationProperties(prefix = "jdbc")  //定义属性的前缀
public class JDBCController2 {

	//批量为属性赋值时,要求配置文件的属性与类中的属性名称必须一致. 自动的赋值.
	private String username;	//定义数据库用户名
	private String password;	//定义数据库密码
	
	//为属性赋值时,一定会调用对象的set方法.
	
	@RequestMapping("/getMsgPrefix")
	public String getMsgValue() {
		
		return username+"|"+password;
	}
	
	
	

	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;
	}
	
}

这样只要属性名相同就可以实现自动批量动态赋值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值