개발/Spring

[스프링] IoC, DI 기본 사용법, Bean 등록, Bean 사용법

mabb 2022. 9. 6. 07:28
반응형

스프링 기본(Core Container)


■Bean객체로 등록하여 컨테이너가 객체를 생성하게 하는 방법(IoC)

 

(개발자는 Bean객체로 등록할 클래스의 정보를 컨테이너에 알려주어야 함.)

방법 1. context.xml 에 <bean>태그를 설정한다.

방법 2. Bean등록 Annotation을 사용한다.
@Component
@Repository
@Service
@Controller

방법 3. xml로 설정하지 않고 자바의 문법으로 설정하겠다.
-> java Config 파일에 설정을 한다.
java Config 파일 : @Configuration어노테이션을 붙인클래스
@Bean 어노테이션을 붙여서 메소드를 만들듯이 Bean객체 등록을 할 수 있음.

@Bean
public Car car(Engine e) {
Car c = new Car();
return c;
}




■ 메모리에 등록된 Bean객체를 사용하는 방법



방법 1. 공장에서 꺼내어 사용한다 ( getBean() 메소드 )
1) BeanFactory : 기본기능, 너무 기본 기능.
2) ApplicationContext : BeanFactory의 기능 모두 포함
+추가기능(AOP, 트랜잭션 등)
->공장 객체를 만들고 공장에서 getBean()메소드로 꺼내어 사용한다.

방법 2. 필요한 곳(필드,매개변수,생성자) 에 주입한다.(DI)
1) <bean>태그의 하위 태그인 <property> <constructor-arg>
태그를 사용한다.
-name속성 : setter 메소드의 set이후의 이름
-ref : 매개변수로 주입할 객체★
-value : 매개변수로 주입할 값
2) 어노테이션을 이용하여 자동 주입한다.
@Autowired :
필드,setter,생성자,일반메소드에 붙이고 같은 타입의 Bean객체를 주입
@Quilifier("name"):
@Autowired 밑에 써서 Autowired를 이름으로 매칭시켜줄 때 사용.
@Resource :
프로퍼티, setter메서드에 적용 가능. Name을 이용한 객체 주입
@Value :
단순한 값을 주입할 때 사용하는 어노테이션

 


■ Bean스캐닝의 범위를 설정하는 방법

 

어노테이션으로 Bean을 등록하고 자동으로 주입하기 위해서는
Scan의 범위를 설정하여야 함 (패키지 단위)

방법 1. xml에 <context:component-scan> 태그를 이용한다.

방법 2.java config파일에 @ComponentScan("kr.co.korea") 어노테이션을 이용한다.

반응형