「Spring」 PropertyPlaceholderConfigurer で Bean 定義ファイルから設定を外出しする
PropertyPlaceholderConfigurer 使うと Bean 定義ファイルから設定を外出しできます。
・Spring Framework Reference Documentation
- Example: the PropertyPlaceholderConfigurer
< http://docs.spring.io/spring/docs/3.2.13.RELEASE/spring-framework-reference/htmlsingle/#beans-factory-placeholderconfigurer >
使う場面としては JDBC の設定とかそんなのが多いと思うので、設定される側のクラスを自分で作るってのはそう多くなさそうですが、以下の感じで getter / setter 持つクラスを作ってやるだけで簡単にできます。
■ Person.java
package com.example.placeholder; public class Person { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
■ placeholder.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> <context:property-placeholder location="classpath:test.properties"/> <bean id="person1" class="com.example.placeholder.Person"> <property name="id" value="${id1}" /> <property name="name" value="${name1}" /> </bean> <bean id="person2" class="com.example.placeholder.Person"> <property name="id" value="${id2}" /> <property name="name" value="${name2}" /> </bean> <context:annotation-config /> <context:component-scan base-package="com.example.placeholder" /> </beans>
■ test.properties
id1=1 name1=hoge id2=2 name2=uga
■ Main.java
package com.example.placeholder; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { try (ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("placeholder.xml")) { Person p1 = (Person) context.getBean("person1"); System.out.println(p1.getId() + " : " + p1.getName()); Person p2 = (Person) context.getBean("person2"); System.out.println(p2.getId() + " : " + p2.getName()); } } }
■ 実行結果
1 : hoge 2 : uga
以上です。
[ 環境情報 ]
Windows 7 SP1
Java SE 7 Update 51
Spring Framework 3.2.13