springboot中使用@Value读取配置文件,通过静态变量实现非侵入式集中管理

本文介绍在SpringBoot中使用@Value注解进行配置文件管理的方法,包括如何通过静态变量初始化实现集中式配置,以及注意事项和代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在SpringBoot中读取XXX.properties等配置文件有许多方法,常见的方法有:@ConfigurationProperties方式、使用@Value注解方式、使用Environment、以及使用PropertiesLoaderUtils这四种方式。本文中主要讲述通过@Value注解方式读取配置文件进行静态变量初始化,从而进行集中式配置文件管理。

一般的,使用@Value注解方式需要在使用的地方进行侵入式编码,即哪里使用需要属性值就要在哪里使用该注解,从SpringCloud配置中心中取值也是如此,一旦变量名发生了变化,则需要进行多处调整,如:

package com.icerno.spring.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 
* Copyright: Copyright (c) 2018 Jun_Zhou
* 
* @ClassName: PropertyController.java
* @Description: 属性文件控制类;
* 
* @version: v1.0.0
* @author: JunZhou
* @Email: 1769676159@qq.com
* @Site: CERNO
* @date: 2018年12月19日 下午9:38:28
* 
 */
@RestController
@RequestMapping("/property/")
public class PropertyController
{   
	@Value("${my.name}")
	public String myName;//侵入式编码,倘若使用较多,则不便更新;
	
	@RequestMapping("getStaticProperty")
	public String getStaticProperty() {
		return myName;
	}
}

为了解决侵入式编码带来的不便,建议使用静态变量统一管理配置属性,如:

application.properties

server.port=9090
my.name=j......u
gitlab.gitLabUrl=http://10.10.10.101
gitlab.serverIP = 10.10.10.101
gitlab.passWord=z......2017
gitlab.adminToken=iJ......BV72y

GitlabConfig.java


package com.icerno.spring.utils;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;


/** Copyright: Copyright (c) 2018 Jun_Zhou
 * 
 * @ClassName: GitlabConfig.java
 * @Description: gitlab相关的配置信息;
 * @version: v1.0.0
 * @author: JunZhou
 * @Email: 1769676159@qq.com
 * @Site: CERNO
 * @date: 2018年11月6日 下午3:32:54 */
@Configuration
public class GitlabConfig
{   
	
	public static String		SERVER_IP;//gitlab服务器的Ip;
	@Value("${gitlab.serverIP}")
	public  void setSERVER_IP(String sERVER_IP)
	{
		GitlabConfig.SERVER_IP = sERVER_IP;
	}
	
	public static String		GITLAB_URL;//gitlab服务器的URL;
	@Value("${gitlab.gitLabUrl}")
	public  void setGITLAB_URL(String gITLAB_URL)
	{
		GitlabConfig.GITLAB_URL = gITLAB_URL;
	}
	
	public static String		GITLAB_PSW;// gitlab密码;
	@Value("${gitlab.passWord}")
	public  void setGITLAB_PSW(String gITLAB_PSW)
	{
		GitlabConfig.GITLAB_PSW = gITLAB_PSW;
	}
	
	
	public static String		GITLAB_ADMIN_TOKEN;//gitlab管理员的token信息;
	@Value("${gitlab.adminToken}")
	public  void setGITLAB_ADMIN_TOKEN(String gITLAB_ADMIN_TOKEN)
	{
		GitlabConfig.GITLAB_ADMIN_TOKEN = gITLAB_ADMIN_TOKEN;
	}
	
}

在使用@Value注解给静态变量注入属性值的时候需要注意:

1、为静态变量注入属性值和非静态变量不同,需要提供setXXX方法,该方法有参,且类型和属性类型一致,必须为非静态,在方法体内为静态属性变量赋值;

2、@Value必须添加在setXXX的方法上;

3、静态属性所在类必须使用@Component注解或者@Configuration修饰;

4、setXXX方法的方法名和静态属性变量无必要联系,但是在方法体内必须进行变量的赋值操作。

否则将注入失败,取值为空;

参考代码如下:


package com.icerno.spring.utils;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;


/** Copyright: Copyright (c) 2018 Jun_Zhou
 * 
 * @ClassName: GitlabConfig.java
 * @Description: gitlab相关的配置信息;
 * @version: v1.0.0
 * @author: JunZhou
 * @Email: 1769676159@qq.com
 * @Site: CERNO
 * @date: 2018年11月6日 下午3:32:54 */
@Configuration
public class GitlabConfig
{   
	
	public static String		SERVER_IP;//gitlab服务器的Ip;
	@Value("${gitlab.serverIP}")
	public  void setSERVER_IP(String sERVER_IP)
	{
		GitlabConfig.SERVER_IP = sERVER_IP;//方法的方法名和静态属性变量无必要联系,但是在方法体内必须进行变量的赋值操作。
	}
	
	public static String		GITLAB_URL;//gitlab服务器的URL;
	@Value("${gitlab.gitLabUrl}")
	public  void setGITLAB_URL(String gITLAB_URL)
	{
		GitlabConfig.GITLAB_URL = gITLAB_URL;
	}
	
	public static String		GITLAB_PSW;// gitlab密码;
	@Value("${gitlab.passWord}")
	public  void setGITLAB_PSW(String gITLAB_PSW)
	{
		GitlabConfig.GITLAB_PSW = gITLAB_PSW;
	}
	
	
	public static String		GITLAB_ADMIN_TOKEN;//gitlab管理员的token信息;
	@Value("${gitlab.adminToken}")
	public  void setGITLAB_ADMIN_TOKEN(String gITLAB_ADMIN_TOKEN)
	{
		GitlabConfig.GITLAB_ADMIN_TOKEN = gITLAB_ADMIN_TOKEN;
	}
	
}

参考文章:
SpringBoot四种读取properties文件的方式

SpringBoot使用@Value给静态变量注入值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值