spring的静态变量注入值

来源:互联网 发布:linux查看硬盘情况 编辑:程序博客网 时间:2024/05/16 17:20

当有个需求,类中的成员变量都是静态的,而且properties配置文件是使用spring加载的(如下)

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />        <property name="ignoreUnresolvablePlaceholders" value="true" />        <property name="ignoreResourceNotFound" value="true" />        <property name="locations">            <list>                <value>classpath:*.properties</value>            </list>        </property>        <property name="fileEncoding" value="UTF-8"/>    </bean>

读取配置文件的类如下:

@Servicepublic class ConfigConstance {    public static String KAFKA_ZK;}

其中properties如下:

kafka.zk=hadoop01:2181,hadoop03:2181

当需要注入变量到KAFKA_ZK的时候如果直接在静态变量上面使用注解会得不到值:

@Servicepublic class ConfigConstance {    //这样得不到值    @Value("${kafka.zk}")    public static String KAFKA_ZK;}

但是spring还有一种就是用set方法注入,当使用set方法注入就可以得到值了:

@Servicepublic class ConfigConstance {    public static String KAFKA_ZK;    //这样就可以注入值    @Value("${kafka.zk}")    public void setKafkaZk(String kafkaZk) {        KAFKA_ZK = kafkaZk;    }}

总结:

spring初始化的时候想给静态变量注入值,需要用set的方式

原创粉丝点击