개발/SPRING

스프링 예제

윤_ve 2021. 5. 21. 12:30

해당 문제 풀이를 해보겠습니다.

 

우선 Professor 클래스를 생성한 뒤 변수와 게터, 세터, 생성자를 만들어 준다

import java.util.ArrayList;

public class Professor {
	private String name;
	private int age;
	private ArrayList<String> object;
	
	public Professor(String name) {
		this.name = name;
	}

	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> getObject() {
		return object;
	}
	public void setObject(ArrayList<String> object) {
		this.object = object;
	}
}

 

그 다음 Professor클래스를 변수로 받는 ProfessorInfo 클래스를 생성

public class ProfessorInfo {
	private Professor professor;

	public Professor getProfessor() {
		return professor;
	}

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

 

그 다음 CTX를 만들어 준다

<?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="professor1" class="com.javalec.spring_ex6_2.Professor">
		<constructor-arg value="김교수"></constructor-arg>
		<property name="age">
			<value>33</value>
		</property>
		<property name="object">
			<list>
				<value>자바</value>
				<value>오라클</value>
			</list>
		</property>
	</bean>
	
	<bean id="professorInfo1" class="com.javalec.spring_ex6_2.ProfessorInfo">
		<property name="professor">
			<ref bean="professor1"/>
		</property>
	</bean>
</beans>

 

빈을 직접 만들어 주는데 생성자로 만들었던 변수 name의 경우는 constructor-arg 태그로 값을 설정하고

그외에는 setter를 통해 값을 넣는 property를 사용해서 값을 설정한다.

 

똑같이 ctx2도 만들어 준다.

 

<?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:c="http://www.springframework.org/schema/c"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="professor3" class="com.javalec.spring_ex6_2.Professor">
		<constructor-arg value="이교수"></constructor-arg>
		<property name="age">
			<value>44</value>
		</property>
		<property name="object">
			<list>
				<value>HTML</value>
				<value>CSS</value>
			</list>
		</property>
	</bean>
</beans>

 

똑같이 만들어 주고 안에 내용은 변경 해준다.

 

그다음 main클래스에서 호출하면 된다.

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

public class MainClass {
	public static void main(String[] args) {
		String configLoc1 = "classpath:professorCTX1.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.getObject());
		System.out.println("==============================");
		ProfessorInfo professorInfo1 = ctx.getBean("professorInfo1", ProfessorInfo.class);
		System.out.println(professorInfo1.getProfessor().getName());
		System.out.println(professorInfo1.getProfessor().getAge());
		System.out.println(professorInfo1.getProfessor().getObject());
		System.out.println("==============================");
		Professor professor3 = ctx.getBean("professor3", Professor.class);
		System.out.println(professor3.getName());
		System.out.println(professor3.getAge());
		System.out.println(professor3.getObject());
	}
}

 

이를 실행하면 

 

이런식으로 출력 되는 것을 알 수 있다.

CTX파일의 경우 빈을 통해 값을 넣어주는 파일인데
아직 의존성제어의 역행에 관한 글을 쓰지 않았으므로

다음글에 설명을 하도록 해보겠습니다.