뚜벅이 한걸음

스프링 프레임 워크 - 의존 주입 본문

Spring

스프링 프레임 워크 - 의존 주입

뚜벅뚜벅뚜벅이 2022. 7. 11. 19:49
반응형

xml말고 자바클래스를 이용해서 객체를 만드는 방법도 있다.

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;



@Configuration //bean에 대한 설정정보를 가지고 있는 문서라는것을 어노테이션을 이용해서 ioc컨테이너에게 알려준다. 
public class ApplicationContext {
	/*
	ioc 컨테이너는 해당 어노테이션을 가지고 있는 클래스를 로드하여  bean을 등록할 수있다. 
	bean을 생성하는 방법은 해당 클래스에 @bean 어노테이션을 가지고 있는 메서드만 호출한 반환값이된다 .
	이때 bean의 id는 메서드 명이된다. 
	*/
	
	//메소드의 호출결과가 객체여야한다. 
	//method의 이름이 bean의 이름이된다. 
	
	@Bean		//얘가 bean이라는 것을 알려줌
	public A methodA() {
		A a = new A();
		
		a.setName("홍길동");
		a.setValue("a객체의 값");
		return a;
	}
	
	@Bean
	public B methodB() {
		B b = new B();
		b.setName("객체 B");
		b.setA(methodA());	//세터 주입. 필요한 메소드를 호출해서 객체를 넣어서 주입한다. 
		
		return b;
	}
	
	
	//ioc 컨테이너는 이 메서드들을 활용해서 의존성을 주입한다. 여기가 설정문서가 되는 것
	
	/*
	 ioc 컨테이너를 이용하여 의존을 주입하기 위해서는 ioc 컨테이너가 생성한 객체끼리만 가능하다. 
	  때문에 해당 클래스에서 스프링의 의존 주입을 하기 위해서는 클래스가 가지고 있는 메서드를 사용할 수밖에 없다. 
	 
	*/
	
	
}

A클래스와 B 클래스가 있을 때 B 클래스 내부에서 A 클래스를 생성한다면

method B라는 이름의 메서드를 이용하여 객체를 생성할 수있다.

※Method Injection (일반 메서드를 이용한 의존성 삽입)

: 의존성을 입력 받는 일반 메서드를 만들고 이를 통해 의존성을 주입한다.

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {

	public static void main(String[] args) {								//자바파일로 만들었기때문에  .class의 형태로 넘긴다. 
		AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(ApplicationContext.class);
		
		//자바이기 때문에 ioc 컨테이너도 객체로서 동작을 한다. 
		
		
		//컨테이너가 가지고있는 객체 중 B 호출하기
		B b = ctx.getBean("methodB", B.class);
		b.printB();
	}

}

AnnotationConfigApplicationContext를 이용하여

ApplicationContext 클래스를 생성자로 넘기면(생성자의 매개변수로 넘기면)

ioc컨테이너는 해당 클래스를 객체화한뒤

@Bean 어노테이션을 가지고 있는 메서드를 전부 호출하여 반환된 객체를 가지고 있게된다 .

--인스턴스의 생명주기를 관리할 수 있게 됨

반응형