해당 문제 풀이를 해보겠습니다.
우선 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파일의 경우 빈을 통해 값을 넣어주는 파일인데
아직 의존성과 제어의 역행에 관한 글을 쓰지 않았으므로
다음글에 설명을 하도록 해보겠습니다.
'개발 > SPRING' 카테고리의 다른 글
[SPRING]requestMethod.get 과 post (0) | 2021.06.22 |
---|---|
[Spring] DI(Dependency Injection, 의존성 주입)와 IOC(Inversion Of Control, 제어의 역행) (0) | 2021.05.24 |
이클립스에 STS 설치 (0) | 2021.05.10 |