동일한 스프링 빈을 여러 개 만들어 놓고 상황(환경)에 따라서 적절한 스프링 빈을 사용할 수 있습니다. profile 속성을 사용하면 됩니다.

20230524111246.png

실습 8-3-1

20230524114620.png

ServerInfo.java

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;
	}

}

applicationCTX_dev.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>"
	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>

applicatonCTX_run.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>"
	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>

MainClass.java

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());
	}
}

20230524114600.png

20230524114611.png