Spring DI
spring framework의 DI 설정방법.
1. Xml 사용
2. Java 사용
3. xml+Java 사용
xml을 사용하여 DI를 설정하는방법을 처음으로 배웠으므로 진행합니다.
xml로 빈을 따로 관리하는것은 분리를 해서 좋을 수도 있지만.. 계속되는 빈설정은 안 좋을수도..?
xml사용으로 중점으로 하겠음.
eclipse에서 Java class의 constructor getter,setter를 만들어서 구성하듯이 똑같이 만들어줍니다.
package com.javalec.ex;
public class Student {
private String name;
private String age;
private String gradeNum;
private String classNum;
public Student(String name, String age, String gradeNum, String classNum) {
this.name = name;
this.age = age;
this.gradeNum = gradeNum;
this.classNum = classNum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getGradeNum() {
return gradeNum;
}
public void setGradeNum(String gradeNum) {
this.gradeNum = gradeNum;
}
public String getClassNum() {
return classNum;
}
public void setClassNum(String classNum) {
this.classNum = classNum;
}
}
↑ Student class.
package com.javalec.ex;
public class StudentInfo {
private Student student;
public StudentInfo(Student student) {
this.student = student;
}
public void getStudentInfo(){
if(student != null) {
System.out.println("이름 : " + student.getName());
System.out.println("나이 : " + student.getAge());
System.out.println("학년 : " + student.getGradeNum());
System.out.println("반 : " + student.getClassNum());
System.out.println("======================");
}
}
public void setStudent(Student student) {
this.student = student;
}
}
↑ StudentInfo class.
중요한 부분은 여기서는 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="student1" class="com.javalec.ex.Student">
<constructor-arg>
<value>홍길동</value>
</constructor-arg>
<constructor-arg>
<value>10살</value>
</constructor-arg>
<constructor-arg>
<value>3학년</value>
</constructor-arg>
<constructor-arg>
<value>20번</value>
</constructor-arg>
</bean>
<bean id="student2" class="com.javalec.ex.Student">
<constructor-arg value="홍길동" />
<constructor-arg value="9살" />
<constructor-arg value="2학년" />
<constructor-arg value="10번" />
</bean>
<bean id="studentInfo" class="com.javalec.ex.StudentInfo">
<constructor-arg>
<ref bean="student1" />
</constructor-arg>
</bean>
</beans>
<beans라는 제일 큰 태그 안에 <bean 이라는 태그가 안에 있고 이제 그 안에 설정을 하면된다.
<bean 의 id는 고유값으로 원하는 값을 넣어서 식별자처럼 자신이 알아보기 좋은걸로 설정을 하며,
class는 해당 패키지의 클래스 값까지 넣어서 설정을 해주면 된다.
위에는 id를 student 1로 설정을 하였으며, class는 그 경로를 정해주면 된다.
<constructor-arg> 이런 형식으로 생성자는 <value>알맞은 타입의 값을 정의.</value>
<value>홍길동</value> Student class.에서 String 형태로 선언을 하였음.
</constructor-arg>
id student2 는 student 1과 같은 class를 선언하였기 때문에 같은 객체를 가르킵니다.
<bean id="student2" class="com.javalec.ex.Student">
<constructor-arg value="홍길동" />
<constructor-arg value="9살" />
<constructor-arg value="2학년" />
<constructor-arg value="10번" />
</bean>
위에 방법은 단지 생성자를 선언하는 부분을 간단하게 좀 더 간력하게 할 수 있는 방법입니다.(자기 자신에게 편한 방법을 사용하면 될 듯..?)
<bean id="studentInfo" class="com.javalec.ex.StudentInfo">
<constructor-arg>
<ref bean="student1" />
</constructor-arg>
</bean>
위에는 bean id를 studentInfo로 선언 class는 StudentInfo로 선언하였습니다.
StudentInfo class에서는 Student class참조하여 변수로 선언을 하였고 거기서 생성자로 student 객체를 매개변수로 받고 있습니다.
그래서 참조할 경우에는 <ref bean = "참조할려는 bean id"/> 이렇게 선언을 하면된다.
즉 Student class를 StudnetInfo class에서 참조하고, bean id = studentInfo는 Student class를 참조하게 되고,
bean id = student2도 Student class를 bean class를 선언을 하였기에 똑같은 객체를 사용하게 됩니다.
나머지 getter setter에 대한 xml bean설정은 더 쉬우니 금방 이해했습니다.
seouliotcenter.tistory.com/69?category=877565
서울IOT센터에서 참조하였습니다.
실전 스프링(Spring) 동영상과정 제 05강 DI활용
실전 스프링(Spring) 동영상과정 제 05강 DI활용 이번 강의는 DI활용편입니다. PC로 보실때는 서울산업진흥원(http://www.sba.kr)에서 제작한 유튜브 동영상(http://www.youtube.com/seouliotcenter) 에서 HD 동영..
seouliotcenter.tistory.com