次のように、Springを使用して.properties
ファイルからプロパティ属性をロードしています。
file: elements.properties
base.module.elementToSearch=1
base.module.elementToSearch=2
base.module.elementToSearch=3
base.module.elementToSearch=4
base.module.elementToSearch=5
base.module.elementToSearch=6
Spring xmlファイル
file: myapplication.xml
<bean id="some"
class="com.some.Class">
<property name="property" value="#{base.module.elementToSearch}" />
</bean>
そして、私のClass.Java
file: Class.Java
public void setProperty(final List<Integer> elements){
this.elements = elements;
}
ただし、デバッグ時には、パラメータ要素はリストの最後の要素のみを取得するため、6つの要素のリストではなく、値が「6」の1つの要素のリストがあります。
値のみを追加するなどの別のアプローチを試してみました#{base.module}
が、プロパティファイルにパラメーターが見つかりません。
回避策は、次のように、コンマで区切られたリストをelements.propertiesファイルに含めることです。
base.module.elementToSearch=1,2,3,4,5,6
それを文字列として使用して解析しますが、より良い解決策はありますか?
次のようなプロパティファイルで配列を定義する場合:
base.module.elementToSearch=1,2,3,4,5,6
このような配列をJavaクラスに次のようにロードできます。
@Value("${base.module.elementToSearch}")
private String[] elementToSearch;
また、コンマ以外の別の区切り文字を使用する場合は、それも使用できます。
@Value("#{'${my.config.values}'.split(',')}")
private String[] myValues; // could also be a List<String>
そして
あなたのアプリケーションのプロパティであなたが持つことができる
my.config.values=value1, value2, value3
Spring 4.0以降でそれを行う方法の例を次に示します
application.properties
コンテンツ:some.key=yes,no,cancel
@Autowire
private Environment env;
...
String[] springRocks = env.getProperty("some.key", String[].class);