Spring下常用的配置环境信息的方法

Spring下配置环境信息

项目中经常需要配置一些环境信息,比如服务器地址,报警信息,开关量等,经常使用的配置方式有如下3种:

  • XML配置
  • @Value注解配置
  • 第三方配置中心如Disconf等

一、XML配置


# 一般新建一个properties文件
xxx.host=http://192.168.0.1:8080


# 在xml中直接引用配置文件中的值即可
<bean id="xxxHost" class="java.lang.String">
    <constructor-arg type="java.lang.String" value="${xxx.host}"/>
</bean>
# 在需要使用的类中直接引用即可
# @Resource注解自动按照名称注入,@Autowired需要和@Qualifier("xxx2Host")搭配使用,才能指定类型
public class HostService {
    @Resource
    private String xxxHost;
    
    @Autowired
    @Qualifier("xxx2Host")
    private String xxx2Host;
}

可以看出XML配置的方法比较繁琐,中间过程太多,下面介绍@Value注解方法完成配置过程

二、@Value注解


# 第一步一般新建一个properties文件
xxx.host=http://192.168.0.1:8080
  • 一般使用

# 在需要使用的类中直接引用即可
public class HostService {
    @Value("${xxx.host}")
    private String xxxHost;
}
  • 如果目标是一个static变量则使用setter注入

# 在需要使用的类中直接引用即可
public class HostService {
    private static String xxxHost;
    @Value("${xxx.host}")
    public void setXxxHost(String xxxHost){
        this.xxxHost=xxxHost;
    }
}
  • 如果希望设置一个默认值

# 首先去配置文件中寻找xxx.host是否存在,不存在则使用10.127.10.0作为默认值
public class HostService {
    @Value("${xxx.host:10.127.10.0}")
    private String xxxHost;
}

可以看出使用@Value注解已经很方便了,哪里需要注解通过@Value主机引入即可使用

三、第三方配置中心

对于一些横向项目,需要打交道的业务方非常多的情况下,配置文件就显得很复杂,而且如果集群部署,每一台机器上都要拷贝一份资料,很容易出错,这时候可以考虑使用第三方配置中心配置环境信息,在Spring中直接引用jar包即可,常用的有百度的Disconf和阿里开源的Diamond等
第三方配置中心一般需要单独部署服务器来完成,而且底层需要ZK支持

本文来自网易实践者社区,经作者李海燕授权发布。