동일한 스프링 빈을 여러 개 만들어 놓고 상황(환경)에 따라서 적절한 스프링 빈을 사용할 수 있습니다. profile 속성을 사용하면 됩니다.
package com.lgy.spring_8_3_1;
public class ServerInfo {
private String ipNum;
private String portNum;
public String getIpNum() {
return ipNum;
}
public void setIpNum(String ipNum) {
this.ipNum = ipNum;
}
public String getPortNum() {
return portNum;
}
public void setPortNum(String portNum) {
this.portNum = portNum;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="<http://www.springframework.org/schema/beans>"
xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>"
xsi:schemaLocation="<http://www.springframework.org/schema/beans> <http://www.springframework.org/schema/beans/spring-beans.xsd>"
profile="dev">
<!-- 개발 서버의 IP 포트번호 설정 -->
<bean id="serverInfo" class="com.lgy.spring_8_3_1.ServerInfo">
<property name="ipNum">
<value>localhost</value>
</property>
<property name="portNum">
<value>8181</value>
</property>
</bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="<http://www.springframework.org/schema/beans>"
xmlns:xsi="<http://www.w3.org/2001/XMLSchema-instance>"
xsi:schemaLocation="<http://www.springframework.org/schema/beans> <http://www.springframework.org/schema/beans/spring-beans.xsd>"
profile="run">
<!-- 운영 서버의 IP 포트번호 설정 -->
<bean id="serverInfo" class="com.lgy.spring_8_3_1.ServerInfo">
<property name="ipNum">
<value>213.186.229.29</value>
</property>
<property name="portNum">
<value>80</value>
</property>
</bean>
</beans>
package com.lgy.spring_8_3_1;
import java.util.Scanner;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass {
public static void main(String[] args) {
String config = "";
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
if(str.equals("dev")) { //개발서버 일 때
config="dev";
}else if(str.equals("run")) { //운영서버 일 때
config ="run";
}
scanner.close();
GenericXmlApplicationContext ctx =new GenericXmlApplicationContext();
ctx.getEnvironment().setActiveProfiles(config); //dev or run
//dev or run 값을 가지고 profile 속성을 찾아감. xml 하나 선택 됨
ctx.load("applicationCTX_dev.xml","applicatonCTX_run.xml");
ServerInfo info = ctx.getBean("serverInfo",ServerInfo.class);
System.out.println("IP:"+info.getIpNum());
System.out.println("port:"+info.getPortNum());
}
}