Spring 静态变量注入赋值,静态方法调用,静态语句块
静态语句块
我在百度百科创建了这个词,静态语句块-百度百科 。
static String x;
//静态语句块
static{
x = "测试静态语句块。";
}
静态方法调用,静态变量赋值。
看了网上好多讲解的都有问题。 Spring 提供了一个类:
org.springframework.beans.factory.config.MethodInvokingFactoryBean
使用方法详解:
在Spring配置文件中配置:
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="staticMethod" value="com.sojson.core.domain.DomainDistribution.setDomainInfo"/>
<property name="arguments">
<array>
<value>{"convert":"word2spell,cn2spark,pingindic,low2up,fullhalf"}</value>
<value>{"color":"cj,img,online,page,select,use,web"}</value>
</array>
</property>
</bean>
name="staticMethod"
:固定写法,顾名思义就是静态方法。
value="com.sojson.core.domain.DomainDistribution.setDomainInfo"
:对应的静态方法,
com.sojson.core.domain.DomainDistribution
是类的全路径,而setDomainInfo
是静态方法名称。
name="arguments"
:参数,而我的array
是因为我要注入的是一个数组,其实是一个 json 数组。
对应的Java代码:
package com.sojson.core.domain;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
public class DomainDistribution {
static String x;
//静态语句块
static{
x = "测试静态语句块。";
}
public static Map<String,Set<String>> domainMap = new LinkedHashMap<String,Set<String>>();
/**
* 静态调用方法测试
* @param domainInfo
*/
public static void setDomainInfo(String[] domainInfo) {
for (String json : domainInfo) {
System.out.println(json);
}
}
}
你可以复制代码测试一下。
都是在项目启动的时候,按加载顺序进行加载,当然也是可以赋值 Java bean。
有问题加群交流!
版权所属:SO JSON在线解析
原文地址:https://www.sojson.com/blog/129.html
转载时必须以链接形式注明原始出处及本声明。
如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。