티스토리 뷰

Spring

[Spring] DI 기본예제 2

먹태 2018. 5. 13. 20:14

DI예제 2


- 이클립스 사용

- DI : Dependency Injection의 약자, 의존주입









<Student>


  1. package com.javalec.ex;
  2.  
  3. public class Student {
  4.     private String name;
  5.     private String age;
  6.     private String gradeNum;
  7.     private String ClassNum;
  8.  
  9.  
  10.    public Student(String name, String age, String gradeNum, String classNum) {
  11.         this.name = name;
  12.         this.age = age;
  13.         this.gradeNum = gradeNum;
  14.         ClassNum = classNum;
  15.     }
  16.  
  17.  
  18.     public String getName() {
  19.         return name;
  20.     }
  21.  
  22.  
  23.     public void setName(String name) {
  24.         this.name = name;
  25.     }
  26.  
  27.  
  28.     public String getAge() {
  29.         return age;
  30.     }
  31.  
  32.  
  33.     public void setAge(String age) {
  34.         this.age = age;
  35.     }
  36.  
  37.  
  38.     public String getGradeNum() {
  39.         return gradeNum;
  40.     }
  41.  
  42.  
  43.     public void setGradeNum(String gradeNum) {
  44.         this.gradeNum = gradeNum;
  45.     }
  46.  
  47.  
  48.     public String getClassNum() {
  49.         return ClassNum;
  50.     }
  51.  
  52.  
  53.     public void setClassNum(String classNum) {
  54.         ClassNum = classNum;
  55.     }
  56. }
  57.  


 -> 예제1과 다르게 생성자를 만들어 필드를 초기화 

(생성자에서 파라미터를 받고 있다)








<StudentInfo>


  1. package com.javalec.ex;
  2.  
  3. public class StudentInfo {
  4.    
  5.     private Student student;
  6.  
  7.     public StudentInfo(Student student) {
  8.         this.student = student;
  9.     }
  10.    
  11.     public void getStudentInfo() {
  12.         if(student != null) {
  13.             System.out.println("이름 : " + student.getName());
  14.             System.out.println("나이 : " + student.getAge());
  15.             System.out.println("학년 : " + student.getGradeNum());
  16.             System.out.println("반 : " + student.getClassNum());
  17.             System.out.println("======================");
  18.         } 
  19.     }
  20.  
  21.     public void setStudent(Student student) {
  22.         this.student = student;
  23.     }
  24.  
  25. }
  26.  






<application.xml>


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5.    
  6.     <bean id="student1" class="com.javalec.ex.Student">
  7.         <constructor-arg>
  8.             <value>홍길동</value>
  9.         </constructor-arg>
  10.         <constructor-arg>
  11.             <value>13</value>
  12.         </constructor-arg>
  13.         <constructor-arg>
  14.             <value>6학년</value>
  15.         </constructor-arg>
  16.         <constructor-arg>
  17.             <value>20번</value>
  18.         </constructor-arg>
  19.     </bean>
  20.  
  21.     <bean id ="student2" class="com.javalec.ex.Student">
  22.         <constructor-arg value = "홍길자"/>
  23.         <constructor-arg value = "12"/>
  24.         <constructor-arg value = "5학년"/>
  25.         <constructor-arg value = "21번"/>
  26.     </bean>
  27.    
  28.     <bean id="studentInfo" class="com.javalec.ex.StudentInfo">
  29.         <constructor-arg>
  30.             <ref bean="student1"/>
  31.         </constructor-arg>
  32.     </bean>
  33.  
  34. </beans>
  35.  


-> Student에서 생성자를 이용 : constructor-arg 사용

(property, value는 setter 사용할 때)








<main>

  1. package com.javalec.ex;
  2.  
  3. import org.springframework.context.support.AbstractApplicationContext;
  4. import org.springframework.context.support.GenericXmlApplicationContext;
  5.  
  6. public class MainClass {
  7.  
  8.     public static void main(String[] args) {
  9.        
  10.         //스프링 컨테이너 구동
  11.         System.out.println("----- 컨테이너 구동 전 -----");
  12.         String config = "classpath:application.xml";
  13.         AbstractApplicationContext ctx = new GenericXmlApplicationContext(config)//스프링 컨테이너 형성
  14.        
  15.         System.out.println("----- 컨테이너 구동 후 -----");
  16.        
  17.         //스프링 컨테이너에서 생성한 객체 요청
  18.         StudentInfo studentInfo = ctx.getBean("studentInfo", StudentInfo.class);
  19.         studentInfo.getStudentInfo();
  20.        
  21.        
  22.         Student student2 = ctx.getBean("student2", Student.class);
  23.         //bean에서 student2를 가져옴
  24.        
  25.         studentInfo.setStudent(student2);
  26.         //studentInfo에 student2로 set
  27.        
  28.         studentInfo.getStudentInfo();
  29.        
  30.        
  31.         //컨테이너 종료
  32.         ctx.close();
  33.        
  34.     }
  35.    
  36. }
  37.  






<결과>





'Spring' 카테고리의 다른 글

Spring 2  (0) 2020.10.13
Spring 1  (0) 2020.10.13
[Spring] DI Annotation 예제  (0) 2018.05.13
[Spring] DI 기본예제 3  (0) 2018.05.13
[Spring] DI 기본예제  (0) 2018.05.13
댓글
최근에 올라온 글
최근에 달린 댓글
링크
Total
Today
Yesterday