2022.10.05 Spring

sofia·2022년 10월 12일
0

Spring

목록 보기
3/11
post-thumbnail

Char 6

(저번에 이어서)

XML과 JAVA를 같이 사용

  1. xml 파일을 만들어서 java를 포함시키는 예

Student.java

package com.javalec.spring_6_3;

import java.util.ArrayList;

public class Student {
	private String name;
	private int age;
	private ArrayList<String> hobbys;
	private double height;
	private double weight;
	
	public Student(String name, int age, ArrayList<String> hobbys) {
		super();
		this.name = name;
		this.age = age;
		this.hobbys = hobbys;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public ArrayList<String> getHobbys() {
		return hobbys;
	}
	public void setHobbys(ArrayList<String> hobbys) {
		this.hobbys = hobbys;
	}
	public double getHeight() {
		return height;
	}
	public void setHeight(double height) {
		this.height = height;
	}
	public double getWeight() {
		return weight;
	}
	public void setWeight(double weight) {
		this.weight = weight;
	}
}

ApplicationcConfig.java

package com.javalec.spring_6_3;

import java.util.ArrayList;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ApplicationConfig {
	@Bean
	public Student student1() {
		ArrayList<String> hobbys = new ArrayList<String>();
		hobbys.add("수영");
		hobbys.add("요리");
		
		Student student = new Student("홍길동", 20, hobbys);
		student.setHeight(180);
		student.setWeight(80);
		
		return student;
	}
	
	
}

MainClass.java

package com.javalec.spring_6_3;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {
	public static void main(String[] args) {
//		AnnotationConfigApplicationContext ctx =  new AnnotationConfigApplicationContext(ApplicationConfig.class);
		
		AbstractApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationCTX.xml");
		Student student1 = ctx.getBean("student1",Student.class);
		System.out.println("이름 :"+student1.getName());
		System.out.println("나이 :"+student1.getAge());
		System.out.println("취미 :"+student1.getHobbys());
		System.out.println("신장 :"+student1.getHeight());
		System.out.println("몸무게 :"+student1.getWeight());
	
		System.out.println("========================================");

		
		Student student2 = ctx.getBean("student2",Student.class);
		System.out.println("이름 :"+student2.getName());
		System.out.println("나이 :"+student2.getAge());
		System.out.println("취미 :"+student2.getHobbys());
		System.out.println("신장 :"+student2.getHeight());
		System.out.println("몸무게 :"+student2.getWeight());
		
	}
}

applicationCTX.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.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

	<context:annotation-config></context:annotation-config>
	<bean class="com.javalec.spring_6_3.ApplicationConfig"></bean>
	
	<bean id="student2" class="com.javalec.spring_6_3.Student">
		<constructor-arg value="홍길순"></constructor-arg>
		<constructor-arg value="30"></constructor-arg>
		<constructor-arg>
			<list>
				<value>마라톤</value>
				<value>요리</value>
			</list>
		</constructor-arg>
		<property name="height" value="190"></property>
		<property name="weight" value="70"></property>
	</bean>
</beans>

pom.xml에 코드 추가

<!-- cglib -->
		<dependency>
		    <groupId>com.kenai.nbpwr</groupId>
		    <artifactId>net-sf-cglib</artifactId>
		    <version>2.1.3-201003011305</version>
		</dependency>
  1. 자바파일에 xml파일을 포함하는 방법

Student.java

package com.javalec.spring_6_3;

import java.util.ArrayList;

public class Student {
	private String name;
	private int age;
	private ArrayList<String> hobbys;
	private double height;
	private double weight;
	
	public Student(String name, int age, ArrayList<String> hobbys) {
		super();
		this.name = name;
		this.age = age;
		this.hobbys = hobbys;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public ArrayList<String> getHobbys() {
		return hobbys;
	}
	public void setHobbys(ArrayList<String> hobbys) {
		this.hobbys = hobbys;
	}
	public double getHeight() {
		return height;
	}
	public void setHeight(double height) {
		this.height = height;
	}
	public double getWeight() {
		return weight;
	}
	public void setWeight(double weight) {
		this.weight = weight;
	}
}

ApplicationcConfig.java

package com.javalec.spring_6_4;

import java.util.ArrayList;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

@Configuration
@ImportResource("classpath:applicationCTX.xml")
public class ApplicationConfig {
	@Bean
	public Student student1() {
		ArrayList<String> hobbys = new ArrayList<String>();
		hobbys.add("수영");
		hobbys.add("요리");
		
		Student student = new Student("홍길동", 20, hobbys);
		student.setHeight(180);
		student.setWeight(80);
		
		return student;
	}
	
	
}

MainClass.java

package com.javalec.spring_6_4;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext ctx =  new AnnotationConfigApplicationContext(ApplicationConfig.class);
		
//		AbstractApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationCTX.xml");
		Student student1 = ctx.getBean("student1",Student.class);
		System.out.println("이름 :"+student1.getName());
		System.out.println("나이 :"+student1.getAge());
		System.out.println("취미 :"+student1.getHobbys());
		System.out.println("신장 :"+student1.getHeight());
		System.out.println("몸무게 :"+student1.getWeight());
	
		System.out.println("========================================");

		
		Student student2 = ctx.getBean("student2",Student.class);
		System.out.println("이름 :"+student2.getName());
		System.out.println("나이 :"+student2.getAge());
		System.out.println("취미 :"+student2.getHobbys());
		System.out.println("신장 :"+student2.getHeight());
		System.out.println("몸무게 :"+student2.getWeight());
		
	}
}

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

	
	<bean id="student2" class="com.javalec.spring_6_4.Student">
		<constructor-arg value="홍길순"></constructor-arg>
		<constructor-arg value="30"></constructor-arg>
		<constructor-arg>
			<list>
				<value>마라톤</value>
				<value>요리</value>
			</list>
		</constructor-arg>
		<property name="height" value="190"></property>
		<property name="weight" value="70"></property>
	</bean>
</beans>

pom.xml에 코드 추가

<!-- cglib -->
		<dependency>
		    <groupId>com.kenai.nbpwr</groupId>
		    <artifactId>net-sf-cglib</artifactId>
		    <version>2.1.3-201003011305</version>
		</dependency>

예제 1


Employee.java

package com.javalec.spring_ex_6_1;

import java.util.ArrayList;

public class Employee {
	private String name;
	private int salary;
	private ArrayList<String> license;
	
	public Employee(String name) {
		super();
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getSalary() {
		return salary;
	}

	public void setSalary(int salary) {
		this.salary = salary;
	}

	public ArrayList<String> getLicense() {
		return license;
	}

	public void setLicense(ArrayList<String> license) {
		this.license = license;
	}
		
	
	
}

EmployeeInfo.java

package com.javalec.spring_ex_6_1;

public class EmployeeInfo {
	private Employee employee;

	public Employee getEmployee() {
		return employee;
	}

	public void setEmployee(Employee employee) {
		this.employee = employee;
	}
}

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

	<bean id="employee1" class="com.javalec.spring_ex_6_1.Employee">
		<constructor-arg value="임영웅"></constructor-arg>
		<property name="salary">
			<value>300</value>
		</property>
		<property name="license">
			<list>
				<value>정보처리기사</value>
				<value>sqlD</value>
			</list>
		</property>
	</bean>
	
	<bean id="employeeInfo1" class="com.javalec.spring_ex_6_1.EmployeeInfo">
		<property name="employee">
			<ref bean="employee1"/>
		</property>
	</bean>
</beans>

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

	<bean id="employee3" class="com.javalec.spring_ex_6_1.Employee">
		<constructor-arg value="이찬원"></constructor-arg>
		<property name="salary">
			<value>200</value>
		</property>
		<property name="license">
			<list>
				<value>정보처리산업기사</value>
				<value>컴활 1</value>
			</list>
		</property>
	</bean>
</beans>

MainEmployee.java

package com.javalec.spring_ex_6_1;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainEmployee {
	public static void main(String[] args) {
		String configLoc1 = "classpath:employeeCTX.xml";
		String configLoc2 = "classpath:employeeCTX2.xml";
		
		AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLoc1,configLoc2);
		
		Employee employee1 = ctx.getBean("employee1",Employee.class);
		System.out.println(employee1.getName());
		System.out.println(employee1.getSalary());
		System.out.println(employee1.getLicense());
		System.out.println("============================================");
		
		
		EmployeeInfo employeeInfo = ctx.getBean("employeeInfo1",EmployeeInfo.class);
		Employee employee2 = employeeInfo.getEmployee();
		System.out.println(employee2.getName());
		System.out.println(employee2.getSalary());
		System.out.println(employee2.getLicense());
		System.out.println("============================================");

	
		Employee employee3 = ctx.getBean("employee3",Employee.class);
		System.out.println(employee3.getName());
		System.out.println(employee3.getSalary());
		System.out.println(employee3.getLicense());
	
	}
}

예제 2

Professor.java

package com.javalec.spring_ex_6_2;

import java.util.ArrayList;

public class Professor {
	private String name;
	private int age;
	private ArrayList<String> subject;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public ArrayList<String> getSubject() {
		return subject;
	}
	public void setSubject(ArrayList<String> subject) {
		this.subject = subject;
	}
	public Professor(String name) {
		super();
		this.name = name;
	}
}

ProfessorInfo.java

package com.javalec.spring_ex_6_2;

public class ProfessorInfo {
	private Professor professor;

	public Professor getProfessor() {
		return professor;
	}

	public void setProfessor(Professor professor) {
		this.professor = professor;
	}
}

professorCTX.xml

package com.javalec.spring_ex_6_2;

import java.util.ArrayList;

public class Professor {
	private String name;
	private int age;
	private ArrayList<String> subject;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public ArrayList<String> getSubject() {
		return subject;
	}
	public void setSubject(ArrayList<String> subject) {
		this.subject = subject;
	}
	public Professor(String name) {
		super();
		this.name = name;
	}
}

professorCTX2.xml

package com.javalec.spring_ex_6_2;

import java.util.ArrayList;

public class Professor {
	private String name;
	private int age;
	private ArrayList<String> subject;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public ArrayList<String> getSubject() {
		return subject;
	}
	public void setSubject(ArrayList<String> subject) {
		this.subject = subject;
	}
	public Professor(String name) {
		super();
		this.name = name;
	}
}

MainProfessor.java

package com.javalec.spring_ex_6_2;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainProfessor {
	public static void main(String[] args) {
		String configLoc1 = "classpath:professorCTX.xml";
		String configLoc2 = "classpath:professorCTX2.xml";
		
		AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLoc1,configLoc2);
		
		Professor professor1 = ctx.getBean("professor1",Professor.class);
		System.out.println(professor1.getName());
		System.out.println(professor1.getAge());
		System.out.println(professor1.getSubject());
		System.out.println("============================================");
		
		ProfessorInfo professorInfo = ctx.getBean("professorInfo1",ProfessorInfo.class);
		Professor professor2 = professorInfo.getProfessor();
		System.out.println(professor2.getName());
		System.out.println(professor2.getAge());
		System.out.println(professor2.getSubject());
		System.out.println("============================================");
		
		Professor professor3 = ctx.getBean("professor3",Professor.class);
		System.out.println(professor3.getName());
		System.out.println(professor3.getAge());
		System.out.println(professor3.getSubject());
	}
}

예제 3

Singer.java

package com.javalec.spring_ex_6_3;

import java.util.ArrayList;

public class Singer {
	private String name;
	private int member;
	private ArrayList<String> song;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getMember() {
		return member;
	}
	public void setMember(int member) {
		this.member = member;
	}
	public ArrayList<String> getSong() {
		return song;
	}
	public void setSong(ArrayList<String> song) {
		this.song = song;
	}
	public Singer(String name) {
		super();
		this.name = name;
	}
}

SingerInfo.java

package com.javalec.spring_ex_6_3;

public class SingerInfo {
	private Singer singer;

	public Singer getSinger() {
		return singer;
	}

	public void setSinger(Singer singer) {
		this.singer = singer;
}

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

	<bean id="singer1" class="com.javalec.spring_ex_6_3.Singer">
		<constructor-arg value="방탄소년단"></constructor-arg>
		<property name="member">
			<value>7</value>
		</property>
		<property name="song">
			<list>
				<value>다이너마이트</value>
				<value>페이크 러브</value>
			</list>
		</property>
	</bean>
	
	<bean id="singerInfo1" class="com.javalec.spring_ex_6_3.SingerInfo"> 
		<property name="singer">
			<ref bean="singer1"/>
		</property>
	</bean>
</beans>

SingerCTX2.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">
	
	
	<bean id="singer3" class="com.javalec.spring_ex_6_3.Singer">
		<constructor-arg value="블랙핑크"></constructor-arg>
		<property name="member">
			<value>4</value>
		</property>
		<property name="song">
			<list>
				<value>아이스크림</value>
				<value>하우 유 라이크 댓</value>
			</list>
		</property>
	</bean>
</beans>

MainSinger.java

package com.javalec.spring_ex_6_3;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainSinger {
	public static void main(String[] args) {
		
	String configLoc1 = "classpath:SingerCTX.xml";
	String configLoc2 = "classpath:SingerCTX2.xml";
	
	AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLoc1,configLoc2);
	
	Singer singer1 = ctx.getBean("singer1",Singer.class);
	System.out.println(singer1.getName());
	System.out.println(singer1.getMember());
	System.out.println(singer1.getSong());
	System.out.println("============================================");
	
	
	SingerInfo singerInfo1 = ctx.getBean("singerInfo1",SingerInfo.class);
	Singer singer2 = singerInfo1.getSinger();
	System.out.println(singer2.getName());
	System.out.println(singer2.getMember());
	System.out.println(singer2.getSong());
	System.out.println("============================================");
	
	Singer singer3 = ctx.getBean("singer3",Singer.class);
	System.out.println(singer3.getName());
	System.out.println(singer3.getMember());
	System.out.println(singer3.getSong());
	}
}

예제 4


Animation.java

package com.javalec.spring_ex_6_4;

import java.util.ArrayList;

public class Animation {
	private String name;
	private int years;
	private ArrayList<String> character;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getYears() {
		return years;
	}
	public void setYears(int years) {
		this.years = years;
	}
	public ArrayList<String> getCharacter() {
		return character;
	}
	public void setCharacter(ArrayList<String> character) {
		this.character = character;
	}
	public Animation(String name) {
		super();
		this.name = name;
	}
	
	
}

AnimationInfo.java

package com.javalec.spring_ex_6_4;

public class AnimationInfo {
	private Animation animation;

	public Animation getAnimation() {
		return animation;
	}

	public void setAnimation(Animation animation) {
		this.animation = animation;
	}
	
}

animationCTX.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">
	
	
	<bean id="animation1" class="com.javalec.spring_ex_6_4.Animation">
		<constructor-arg value="원피스"></constructor-arg>
		<property name="years">
			<value>1999</value>
		</property>
		<property name="character">
			<list>
				<value>루피</value>
				<value>조로</value>
				<value>상디</value>
			</list>
		</property>
	</bean>
	
	<bean id="animationInfo1" class="com.javalec.spring_ex_6_4.AnimationInfo"> 
		<property name="animation">
			<ref bean="animation1"/>
		</property>
	</bean>

</beans>

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

	<bean id="animation3" class="com.javalec.spring_ex_6_4.Animation">
		<constructor-arg value="블리치"></constructor-arg>
		<property name="years">
			<value>2004</value>
		</property>
		<property name="character">
			<list>
				<value>이치고</value>
				<value>오리히메</value>
			</list>
		</property>
	</bean>
</beans>

MainAnimation.java

package com.javalec.spring_ex_6_4;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainAnimation {
	public static void main(String[] args) {
		
		String configLoc1 = "classpath:animationCTX.xml";
		String configLoc2 = "classpath:animationCTX2.xml";
		
		AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLoc1,configLoc2);
		
		Animation animation1 = ctx.getBean("animation1",Animation.class);
		System.out.println(animation1.getName());
		System.out.println(animation1.getYears());
		System.out.println(animation1.getCharacter());
		System.out.println("============================================");
		
		
		AnimationInfo animationInfo1 = ctx.getBean("animationInfo1",AnimationInfo.class);
		Animation animation2 = animationInfo1.getAnimation();
		System.out.println(animation2.getName());
		System.out.println(animation2.getYears());
		System.out.println(animation2.getCharacter() );
		System.out.println("============================================");
		
		Animation animation3 = ctx.getBean("animation3",Animation.class);
		System.out.println(animation3.getName());
		System.out.println(animation3.getYears());
		System.out.println(animation3.getCharacter() );
		
		
		}
}

예제 5


Nasdaq.java

package com.javalec.spring_ex_6_5;

import java.util.ArrayList;

public class Nasdaq {
	private String stock;
	private int ranking;
	private ArrayList<String> production;
	public String getStock() {
		return stock;
	}
	public void setStock(String stock) {
		this.stock = stock;
	}
	public int getRanking() {
		return ranking;
	}
	public void setRanking(int ranking) {
		this.ranking = ranking;
	}
	public ArrayList<String> getProduction() {
		return production;
	}
	public void setProduction(ArrayList<String> production) {
		this.production = production;
	}
	public Nasdaq(String stock) {
		super();
		this.stock = stock;
	}
	
	
}

NasdaqInfo.java

package com.javalec.spring_ex_6_5;

public class NasdaqInfo {
	private Nasdaq nasdaq;

	public Nasdaq getNasdaq() {
		return nasdaq;
	}

	public void setNasdaq(Nasdaq nasdaq) {
		this.nasdaq = nasdaq;
	}
	
	
}

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

	<bean id="nasdaq1" class="com.javalec.spring_ex_6_5.Nasdaq">
		<constructor-arg value="Tesla"></constructor-arg>
		<property name="ranking">
			<value>6</value>
		</property>
		<property name="production">
			<list>
				<value>모델 X</value>
				<value>모델 Y</value>
			</list>
		</property>
	</bean>
	
	<bean id="nasdaqInfo1" class="com.javalec.spring_ex_6_5.NasdaqInfo"> 
		<property name="nasdaq">
			<ref bean="nasdaq1"/>
		</property>
	</bean>
</beans>

nasdaqCTX.2xml

<?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">
	
	<bean id="nasdaq3" class="com.javalec.spring_ex_6_5.Nasdaq">
		<constructor-arg value="Nvidia"></constructor-arg>
		<property name="ranking">
			<value>7</value>
		</property>
		<property name="production">
			<list>
				<value>RTX 3080</value>
				<value>RTX 2080</value>
			</list>
		</property>
	</bean>

</beans>

MainNasdaq.java

package com.javalec.spring_ex_6_5;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainNasdaq {
	public static void main(String[] args) {
		
		String configLoc1 = "classpath:nasdaqCTX.xml";
		String configLoc2 = "classpath:nasdaqCTX2.xml";
		
		AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLoc1,configLoc2);
		
		Nasdaq nasdaq1 = ctx.getBean("nasdaq1",Nasdaq.class);
		System.out.println(nasdaq1.getStock());
		System.out.println(nasdaq1.getRanking());
		System.out.println(nasdaq1.getProduction());
		System.out.println("============================================");
		
		
		NasdaqInfo nasdaqInfo1 = ctx.getBean("nasdaqInfo1",NasdaqInfo.class);
		Nasdaq nasdaq2 = nasdaqInfo1.getNasdaq();
		System.out.println(nasdaq2.getStock());
		System.out.println(nasdaq2.getRanking());
		System.out.println(nasdaq2.getProduction());
		System.out.println("============================================");
		
		Nasdaq nasdaq3 = ctx.getBean("nasdaq3",Nasdaq.class);
		System.out.println(nasdaq3.getStock());
		System.out.println(nasdaq3.getRanking());
		System.out.println(nasdaq3.getProduction());
		}
}

Char 7. 생명 주기(life cycle) 와 범위(scope)

.refresh() -> 생성과 설정을 별도로 분리 한 경우 사용(초기화함수)

예제 1

Student.java

package com.javalec.spring_7_1;

public class Student {
	private String name;
	private int age;
 
	public Student(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

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

	<bean id="student" class="com.javalec.spring_7_1.Student">
		<constructor-arg value="홍길순"></constructor-arg>
		<constructor-arg value="30"></constructor-arg>
	</bean>
</beans>

MainClass.java

package com.javalec.spring_7_1;

import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {
	public static void main(String[] args) {
		GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
		ctx.load("classpath:applicationCTX.xml");
		ctx.refresh();
		
		Student student = ctx.getBean("student",Student.class);// 객체 정보 가지고 오기
		System.out.println("이름 : "+student.getName());
		System.out.println("나이 : "+student.getAge());
		
		ctx.close();
	}
}

InitializingBean, DisposableBean

1. 오버라이징 이용

=> interface사용
Student.java

예제 2

package com.javalec.spring_7_2;

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

public class Student implements InitializingBean, DisposableBean{
	private String name;
	private int age;
	
	
	@Override//먼저 호출됨
	public void afterPropertiesSet() throws Exception {
		System.out.println("afterPropertiesSet()");
	}// 객체 생성시 먼저 호출됨.
 
	@Override
	public void destroy() throws Exception {
		System.out.println("destroy()");
	}//객체 소멸 후에 호출
	
	
	public Student(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}

}

2. Annotation 사용

예제 3

OtherStudent.java

package com.javalec.spring_7_2;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

public class OtherStudent {
	private String name;
	private int age;
	
	@PostConstruct
	public void initMethod() {
		System.out.println("initMethod()");
	}//객체 생성 후에 호출
	
	@PreDestroy
	public void destoryMethod() {
		System.out.println("destoryMethod()");
	}//객체 소멸 중 호출
	
	public OtherStudent(String name, int age) {//생성자
		super();
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}

}

설정파일 => xmlns:context="http://www.springframework.org/schema/context" 추가

applicationCTX.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.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

	<context:annotation-config></context:annotation-config>
	<!-- initMethod(),destoryMethod() 출력-->
	
	
	<bean id="student" class="com.javalec.spring_7_2.Student">
		<constructor-arg value="홍길순"></constructor-arg>
		<constructor-arg value="30"></constructor-arg>
	</bean>
	
	<bean id="otherstudent" class="com.javalec.spring_7_2.OtherStudent">
		<constructor-arg value="홍길자"></constructor-arg>
		<constructor-arg value="50"></constructor-arg>
	</bean>
</beans>

MainClass.java

package com.javalec.spring_7_2;

import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {
	public static void main(String[] args) {
		GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
		ctx.load("classpath:applicationCTX.xml");
		ctx.refresh();
		
		ctx.close();
//		ctx.close();
	}
}

만약에 Annotation 오류 발생시 아래의 코드 추가

<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>

Spring Bean 범위(scope)

예제 4

Student.java

package com.javalec.spring_7_3;

public class Student{
	private String name;
	private int age;
	
	public Student(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}

}

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

	<bean id="student" class="com.javalec.spring_7_3.Student">
		<constructor-arg value="홍길순"></constructor-arg>
		<constructor-arg value="30"></constructor-arg>
	</bean>
</beans>

MainClass.java

package com.javalec.spring_7_3;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {
	public static void main(String[] args) {
		AbstractApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationCTX.xml");

		Student student1 = ctx.getBean("student",Student.class);
		System.out.println("이름 : "+student1.getName());
		System.out.println("나이 : "+student1.getAge());
		
		System.out.println("==============================");
		
		
		Student student2 = ctx.getBean("student",Student.class);
		student2.setName("홍길자");
		student2.setAge(100);
		System.out.println("이름 : "+student2.getName());
		System.out.println("나이 : "+student2.getAge());
		

		System.out.println("==============================");
		System.out.println("이름 : "+student1.getName());
		System.out.println("나이 : "+student1.getAge());
		
		System.out.println("==============================");
		if (student1.equals(student2)) {
			System.out.println("student1 == student2");
		} else {
			System.out.println("student1 != student2");
		}
	}
}

Char 8. 외부 파일을 이용한 설정

Enviroment 객체 이용하여 외부의 설정값을 가지고 와서 이용

  1. 어플리케이션의 기초인 ConfigurableApplicationContext로 ctx 파일 생성

2. ctx.getEnvironment을 통해 얻은 객체를 ConfigurableEnvironment에서 생성한 Environment 객체 env에 담는다.

3. env.getPropertySources();로 프로퍼티소스를 얻어와서 MutablePropertySources에서 생성한 인스턴스에 넣는다.   getPropertySources();를 해주는 이유는 Environment 객체 안에는 각각의 정보를 갖고있는 PropertySources라는 객체가 있어서 다 구해옴

4. PropertySources에서 추가와 추출 가능 (추가 : addLast  / 추출 : getProperty)

예제 5

admin.properties

admin.id=abcde
admin.pw=12345

AdminConnection.java

package com.javalec.spring_8_1;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;

public class AdminConnection implements InitializingBean, EnvironmentAware {
   private Environment env; // Environment는 프로젝트당 1개만 생성 가능
   private String adminId;
   private String adminPw;
   
   @Override//객체 생성되기 전에 호출됨
   public void setEnvironment(Environment environment) {
      System.out.println("setEnvironment");
      setEnv(environment);
   }
   
   @Override // 객체가 생성될 때 호출
   public void afterPropertiesSet() throws Exception {
      System.out.println("afterPropertiesSet()");
      setAdminId(env.getProperty("admin.id"));
      setAdminPw(env.getProperty("admin.pw"));
   }
   
   public Environment getEnv() {
      return env;
   }
   public void setEnv(Environment env) {
      this.env = env;
   }
   public String getAdminId() {
      return adminId;
   }
   public void setAdminId(String adminId) {
      this.adminId = adminId;
   }
   public String getAdminPw() {
      return adminPw;
   }
   public void setAdminPw(String adminPw) {
      this.adminPw = adminPw;
   }
}

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

	<bean id="adminConnection" class="com.javalec.spring_8_1.AdminConnection"></bean>
</beans>

MainClass.java

package com.javalec.spring_8_1;

import java.io.IOException;

import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.core.io.support.ResourcePropertySource;

public class MainClass {
	public static void main(String[] args) {
		ConfigurableApplicationContext ctx = new GenericXmlApplicationContext();
		ConfigurableEnvironment env = ctx.getEnvironment();
		MutablePropertySources propertySources = env.getPropertySources();
		//외부 파일 설정
		
		try {
			propertySources.addLast(new ResourcePropertySource("classpath:admin.properties"));
			System.out.println(env.getProperty("admin.id"));
			System.out.println(env.getProperty("admin.pw"));
		} catch (IOException e) {//외부파일이 없을 수도 있기 때문에 예외처리 
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		GenericXmlApplicationContext gctx = (GenericXmlApplicationContext) ctx;
		//캐스팅
		gctx.load("applicationCTX.xml");
		gctx.refresh();
		
		AdminConnection adminConnection = gctx.getBean("adminConnection",AdminConnection.class);
		System.out.println("admin ID : "+adminConnection.getAdminId());
		System.out.println("admin PW : "+adminConnection.getAdminPw());
	}
}

프로퍼티 파일을 이용한 설정

  1. 스프링 설정 XML파일에 프로퍼티 파일을 명시

*.외부파일 사용(admin.properties, sub_admin.properties)
<context:property-placeholder location="classpath:admin.properties, classpath:sub_admin.properties" />

*.참조값 사용

<property name="adminId">
<value>${admin.id}</value>
</property>

예제 6

admin.properties

admin.id=abcde
admin.pw=12345

sub_admin.properties

sub_admin.id=fghij
sub_admin.pw=67890

AdminConnection.java

package com.javalec.spring_8_2;

public class AdminConnection {
   private String adminId;
   private String adminPw;
   private String sub_adminId;
   private String sub_adminPw;
   
   
   
   public String getSub_adminId() {
	   return sub_adminId;
   }
   public void setSub_adminId(String sub_adminId) {
	   this.sub_adminId = sub_adminId;
   }
   public String getSub_adminPw() {
		return sub_adminPw;
   }
   public void setSub_adminPw(String sub_adminPw) {
		this.sub_adminPw = sub_adminPw;
   }
   
   
   public String getAdminId() {
	      return adminId;
   }
   public void setAdminId(String adminId) {
      this.adminId = adminId;
   }
   public String getAdminPw() {
      return adminPw;
   }
   public void setAdminPw(String adminPw) {
      this.adminPw = adminPw;
   }
}

applicationCTX.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.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

	<context:property-placeholder location="classpath:admin.properties, classpath:sub_admin.properties"/>
	
	<bean id="adminConnection" class="com.javalec.spring_8_2.AdminConnection">
		<property name="adminId">
			<value>${admin.id}</value>
			<!-- 외부파일에서 데이터를 가지고 와서  AdminConnection.java파일의 adminId에 저장됨-->
		</property>
		<property name="adminPw">
			<value>${admin.pw}</value>
			<!-- 외부파일에서 데이터를 가지고 와서  AdminConnection.java파일의 adminPw에 저장됨-->
		</property>
		<property name="sub_adminId">
			<value>${sub_admin.id}</value>
			<!-- 외부파일에서 데이터를 가지고 와서  AdminConnection.java파일의 sub_adminId에 저장됨-->
		</property>
		<property name="sub_adminPw">
			<!-- 외부파일에서 데이터를 가지고 와서  AdminConnection.java파일의 sub_adminPw에 저장됨-->
			<value>${sub_admin.pw}</value>
		</property>
	</bean>
</beans>

MainClass.java

package com.javalec.spring_8_2;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {
	public static void main(String[] args) {
//		AbstractApplicationContext ctx = new GenericXmlApplicationContext("applicationCTX.xml");
		AbstractApplicationContext ctx = new GenericXmlApplicationContext("applicationCTX.xml");
		AdminConnection connection =  ctx.getBean("adminConnection",AdminConnection.class);
		System.out.println("adminID : "+connection.getAdminId());
		System.out.println("adminPW : "+connection.getAdminPw());
		System.out.println("sub_adminID : "+connection.getSub_adminId());
		System.out.println("sub_adminPW : "+connection.getSub_adminPw());
	}
}

2.스프링 설정 JAVA파일에 프로퍼티 파일을 명시

public static PropertySourcesPlaceholderConfigurer properties() {}
=>xml 의 context:property-placeholder 동일
(외부파일 사용)

@Value("${admin.id}")
private String adminId;
=>value 어노테이션 이용해서 값을 setting -> 참조값을 set 역할로 저장

예제 7

admin.properties

admin.id=abcde
admin.pw=12345

sub_admin.properties

sub_admin.id=fghij
sub_admin.pw=67890

AdminConnection.java

package com.javalec.spring_8_2_2;

public class AdminConnection {
   private String adminId;
   private String adminPw;
   private String sub_adminId;
   private String sub_adminPw;
   
   
   
   public String getSub_adminId() {
	   return sub_adminId;
   }
   public void setSub_adminId(String sub_adminId) {
	   this.sub_adminId = sub_adminId;
   }
   public String getSub_adminPw() {
		return sub_adminPw;
   }
   public void setSub_adminPw(String sub_adminPw) {
		this.sub_adminPw = sub_adminPw;
   }
   
   
   public String getAdminId() {
	      return adminId;
   }
   public void setAdminId(String adminId) {
      this.adminId = adminId;
   }
   public String getAdminPw() {
      return adminPw;
   }
   public void setAdminPw(String adminPw) {
      this.adminPw = adminPw;
   }
}

ApplicationConfig.java

package com.javalec.spring_8_2_2;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

@Configuration 
public class ApplicationConfig {
	@Value("${admin.id}")//참조값 형식으로 넣어야함
	private String adminId;
	
	@Value("${admin.pw}")//참조값 형식으로 넣어야함
	private String adminPw;
	
	@Value("${sub_admin.id}")//참조값 형식으로 넣어야함
	private String sub_adminId;
	
	@Value("${sub_admin.pw}")//참조값 형식으로 넣어야함
	private String sub_adminPw;
	
	
	@Bean
	public static  PropertySourcesPlaceholderConfigurer propertices() {
		PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
		
		Resource[] locations = new Resource[2];
		locations[0] = new ClassPathResource("admin.properties");
		locations[1] = new ClassPathResource("sub_admin.properties");
		//외부 파일을 읽음
		configurer.setLocations(locations);
		
		return configurer;
	}
	
	@Bean
	public AdminConnection adminConnection() {//AdminConnection가 클래스 adminConnection는 아이디
		AdminConnection adminConnection = new AdminConnection();
		adminConnection.setAdminId(adminId);
		//AdminConnection의 adminId로 세팅됨
		adminConnection.setAdminPw(adminPw);
		//AdminConnection의 adminPw로 세팅됨
		adminConnection.setSub_adminId(sub_adminId);
		//AdminConnection의 sub_adminId로 세팅됨
		adminConnection.setSub_adminPw(sub_adminPw);
		//AdminConnection의 sub_adminPw로 세팅됨
		
		return adminConnection;
		
	}
}

MainClass.java

package com.javalec.spring_8_2_2;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {
	public static void main(String[] args) {
//		AbstractApplicationContext ctx = new GenericXmlApplicationContext("applicationCTX.xml");
		AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class);
		
		AdminConnection connection =  ctx.getBean("adminConnection",AdminConnection.class);
		System.out.println("adminID : "+connection.getAdminId());
		System.out.println("adminPW : "+connection.getAdminPw());
		System.out.println("sub_adminID : "+connection.getSub_adminId());
		System.out.println("sub_adminPW : "+connection.getSub_adminPw());
	}
}

프로파일(profile) 속성을 이용한 설정

-> 이런 경우 보통 사용자가 쓰는 운영서버와 개발 서버를 따로두는 경우를 이용하여 설정

  1. Xml 설정 파일을 이용하는 경우
    xml 파일에 작성

예제 8

ServerInfo.java

package com.javalec.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) {
		PortNum = portNum;
	}
	
	
}

applicationCTX_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">

	<bean id="serverInfo" class="com.javalec.spring_8_3_1.ServerInfo">
		<property name="ipNum">
			<value>213.186.229.29</value>
		</property>
		<property name="portNum">
			<value>80</value>
		</property>
	</bean>
</beans>

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

	<bean id="serverInfo" class="com.javalec.spring_8_3_1.ServerInfo">
		<property name="ipNum">
			<value>localhost</value>
		</property>
		<property name="portNum">
			<value>8181</value>
		</property>
	</bean>
</beans>

MainClass.java

package com.javalec.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);
		ctx.load("applicationCTX_dev.xml","applicationCTX_run.xml");
		ServerInfo info = ctx.getBean("serverInfo",ServerInfo.class);
		System.out.println("ip : "+info.getIpNum());
		System.out.println("port : "+info.getPortNum());
	}
}

2.JAVA 설정 파일을 이용하는 경우
Annotation부터 작성

예제 9

ServerInfo.java

package com.javalec.spring_8_3_2;

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) {
		PortNum = portNum;
	}
	
	
}

ApplicationConfigDev.java

package com.javalec.spring_8_3_2;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
@Profile("dev")
public class ApplicationConfigDev {
	
	@Bean
	public ServerInfo serverInfo() {
		ServerInfo info = new ServerInfo();
		info.setIpNum("localhost");
		info.setPortNum("8181");
		
		return info;
	}
	
	
	
}

ApplicationConfigRun.java

package com.javalec.spring_8_3_2;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
@Profile("run")
public class ApplicationConfigRun {
	@Bean
	public ServerInfo serverInfo() {
		ServerInfo info = new ServerInfo();
		info.setIpNum("213.186.229.29");
		info.setPortNum("80");
		
		return info;

	}

}

MainClass.java

package com.javalec.spring_8_3_2;

import java.util.Scanner;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
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);
//		ctx.load("applicationCTX_dev.xml","applicationCTX_run.xml");
		
		AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
		ctx.getEnvironment().setActiveProfiles(config);
		ctx.register(ApplicationConfigDev.class, ApplicationConfigRun.class);
		ctx.refresh();
		
		ServerInfo info = ctx.getBean("serverInfo",ServerInfo.class);
		System.out.println("ip : "+info.getIpNum());
		System.out.println("port : "+info.getPortNum());
	}
}

reference

0개의 댓글