Spring

Spring DI

yoon9 2021. 3. 21. 16:03

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로 선언 classStudentInfo로 선언하였습니다.

 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