xml로 객체주입을 하면 좋으점
자바코드를 하나도 고치지 않고도 xml에서 어떤 객체를 주입하냐에 따라
다른 기능을 사용할 수 있다.
(현재는 작은 프로젝트라 번거로울 수 있지만 큰 프로젝트에선 이게 효율적일 수 있다고 함)
먼저 main에서 xml을 통한 객체주입을 받겠다는 코드와 객체주입을 받은걸 얻어오는 코드를 작성한다.
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();
ctx.close();
}
}
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 Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
}
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;
}
}
생성자를 통하여 값을 받을 경우 <constructor-arg>태그를 사용하고
setter를 통하여 값을 받을 땐 <property>태그를 사용한다
<!-- 생성자를 통한 객체 주입 -->
<bean id="student2" class="com.example.condi.Student">
<constructor-arg value="홍길동"/>
<constructor-arg value="9살" />
<constructor-arg value="2학년" />
<constructor-arg value="10번" />
</bean>
<bean id="studentInfo" class="com.example.condi.StudentInfo">
<constructor-arg >
<ref bean="student2" />
</constructor-arg>
</bean>
<!--<property name="변수명" value="값" /> -->

'스프링' 카테고리의 다른 글
spring xml, @어노테이션 같이 사용한 DI (0) | 2022.10.25 |
---|---|
spring java로 DI (0) | 2022.10.25 |
(Spring)xml을 이용한 트랜젝션 사용 (0) | 2022.10.20 |
ResponseEntity란? (0) | 2022.10.18 |
@RestController , @Controller의 차이 (1) | 2022.10.18 |
xml로 객체주입을 하면 좋으점
자바코드를 하나도 고치지 않고도 xml에서 어떤 객체를 주입하냐에 따라
다른 기능을 사용할 수 있다.
(현재는 작은 프로젝트라 번거로울 수 있지만 큰 프로젝트에선 이게 효율적일 수 있다고 함)
먼저 main에서 xml을 통한 객체주입을 받겠다는 코드와 객체주입을 받은걸 얻어오는 코드를 작성한다.
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();
ctx.close();
}
}
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 Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
}
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;
}
}
생성자를 통하여 값을 받을 경우 <constructor-arg>태그를 사용하고
setter를 통하여 값을 받을 땐 <property>태그를 사용한다
<!-- 생성자를 통한 객체 주입 -->
<bean id="student2" class="com.example.condi.Student">
<constructor-arg value="홍길동"/>
<constructor-arg value="9살" />
<constructor-arg value="2학년" />
<constructor-arg value="10번" />
</bean>
<bean id="studentInfo" class="com.example.condi.StudentInfo">
<constructor-arg >
<ref bean="student2" />
</constructor-arg>
</bean>
<!--<property name="변수명" value="값" /> -->

'스프링' 카테고리의 다른 글
spring xml, @어노테이션 같이 사용한 DI (0) | 2022.10.25 |
---|---|
spring java로 DI (0) | 2022.10.25 |
(Spring)xml을 이용한 트랜젝션 사용 (0) | 2022.10.20 |
ResponseEntity란? (0) | 2022.10.18 |
@RestController , @Controller의 차이 (1) | 2022.10.18 |