소스코드 다운받기

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을 같이 쓰는 예제이다. 가끔 쓰인다고 하니 한바퀴 돌고 나서 다시보자

참고자료