스프링 6강 - DI 설정방법 두가지 (XML vs @Annotation)
November 07, 2018
6-1 XML파일을 이용한 DI 설정 방법
- 여태까지와 똑같다 예제 6-1 파일로 복습
6-2 JAVA 파일을 (@Annotation) 이용한 DI 설정 방법
- 예제 6-2는 xml파일이 없다 -> ApplicationConfig.java 가 대신 의존성을 주입하고 있다
- @Configuration
- 이 클래스는 스프링 설정에 사용되는 클래스 입니다 라고 명시해 주는 어노테이션
- @Bean
- Bean - 객체생성
- 생성자() 혹은 setter()를 이용해 설정
// ApplicationConfig.java
package com.javalec.ex;
import java.util.ArrayList;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class ApplicationConfig {
@Bean
public Student student1(){
ArrayList<String> hobbys = new ArrayList<String>();
hobbys.add("수영");
hobbys.add("요리");
// 생성자를 이용
Student student = new Student("홍길동", 20, hobbys);
// setter 이용
student.setHeight(180);
student.setWeight(80);
return student;
}
@Bean
public Student student2(){
ArrayList<String> hobbys = new ArrayList<String>();
hobbys.add("독서");
hobbys.add("음악감상");
// 생성자 이용
Student student = new Student("홍길순", 18, hobbys);
// setter 이용
student.setHeight(170);
student.setWeight(55);
return student;
}
}
// Main.java
package com.javalec.ex;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class MainClass {
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationConfig.class);
Student student1 = ctx.getBean("student1", Student.class);
System.out.println("이름 : " + student1.getName());
System.out.println("나이 : " + student1.getAge());
System.out.println("취미 : " + student1.getHobbys());
System.out.println("신장 : " + student1.getHeight());
System.out.println("몸무게 : " + student1.getWeight());
Student student2 = ctx.getBean("student2", Student.class);
System.out.println("이름 : " + student2.getName());
System.out.println("나이 : " + student2.getAge());
System.out.println("취미 : " + student2.getHobbys());
System.out.println("신장 : " + student2.getHeight());
System.out.println("몸무게 : " + student2.getWeight());
ctx.close();
}
}
Main.java에서 student1과 student2는 같을까 다를까?
6-3과 6-4는 xml과 annotation을 같이 쓰는 예제이다. 가끔 쓰인다고 하니 한바퀴 돌고 나서 다시보자
참고자료
- 스프링과정6강블스(김명호 강사)