DI: 의존 주입
자바 파일을 통해서 주입 할 수도 있다.

생성자에서 parameter를 갖고 있을 경우
"<constructor-arg>": 생성자 parameter를 써준다.
구조)
xml 파일이다.
생성자를 이용할 때
1번 방법
<constructor-arg>
<value>홍길동</value>
</constructor-arg>
2번 방법
<constructor-arg value=""/>
setter를 이용할 때
<property name="">
<value></value>
</property>
<bean id="studentInfo" class="com.javalec.ex.StudentInfo">
<constructor-arg>
<ref bean="student1"/> <얘는 누굴 참조하나? Student클래스로부터 나온 객체둘 중 하나를
</constructor-arg> 참조하면 된다. Student1, Student2
</bean>
예제 코드
MainClass.java
package com.fastcampus.ch2;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass {
public static void main(String[] args) {
String configLocation = "classpath:applicationCTX.xml";
AbstractApplicationContext ctx = new GenericXmlApplicationContext(configLocation);
StudentInfo studentInfo = ctx.getBean("studentInfo", StudentInfo.class);
studentInfo.getStudentInfo();
Student student2 = ctx.getBean("student2", Student.class);
studentInfo.setStudent(student2);
studentInfo.getStudentInfo();
ctx.close();
}
}
Student.java
package com.fastcampus.ch2;
import java.util.ArrayList;
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;
}
}
StudentInfo.java
package com.fastcampus.ch2;
import java.util.ArrayList;
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;
}
}
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="student1" class="com.fastcampus.ch2.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.fastcampus.ch2.Student">
<constructor-arg value="홍길동"/>
<constructor-arg value="9살"/>
<constructor-arg value="2학년"/>
<constructor-arg value="10번"/>
</bean>
<bean id="studentInfo" class="com.fastcampus.ch2.StudentInfo">
<constructor-arg>
<ref bean="student1"/>
</constructor-arg>
</bean>
</beans>
자바 코드는 건들지 않고 xml 파일만 건드려서 pencil이 설정되기 위한 클래스 파일이 어떤건지
xml 파일에서 클래스만 바꿔주면 된다.
(bean id ="pencil" class="com.javalec.ex.Pencil6B")
pencil은 안바뀜. com.javalec.ex.Pencil6B 여기만 바뀜

'Spring > 신입SW인력을 위한 실전 자바Java 스프링Spring' 카테고리의 다른 글
스프링Spring 동영상과정 제 07강 (0) | 2023.06.12 |
---|---|
스프링Spring 동영상과정 제 06강 (0) | 2023.06.11 |
스프링Spring 동영상과정 제 04강 (0) | 2023.06.10 |
스프링Spring 동영상과정 제 03강 (0) | 2023.06.10 |
스프링Spring 동영상과정 제 02강 (0) | 2023.06.10 |