Spring/02 Spring DI와 AOP

05 Spring DI 활용하기(2) - 이론

라타노 2023. 6. 28. 22:22
반응형

Spring DI 활용하기(2) - 이론

6) IoCDI

- 제어의 역전 (IoC) - 제어의 흐름을 전통적인 방식과 다르게 뒤바꾸는 것

의존성 주입 DI - 사용할 객체를 외부에서 주입받는 것

>> 전통적인 방식은 호출 방식 사용자가 라이브러리 메서드를 호출

>> Ioc 방식은 라이브러리에서 호출하여 사용자에게 전달

>> 의 값을 넣을시 매번 코드를 변경해야됨 , IoC처럼 변경시 변경에 유연함 의존성 주입 DI(수동)

      ※ 의존성 주입 종류 : 수동 , 자동(@Autowired

 

 

 

6-1) 스프링 애너테이션 - @Autowired

- 인스턴스 변수(iv), setter, 참조형 매개변수를 가진 생성자, 메서드에 적용

>> @Value를 생략하면, 주입할게 없다고 오류 발생

>> 생성자의 @Autowired는 생략 가능

 

 

AppliationContextTest.java

>> 기본생성자를 생성하면, 기본생성자의 값을 얻어온다

>> 따라서 @Autowired를 주입하여 출력할 생성자를 알려줘야 한다

기본생성자를 사용시, @Autowired생략될 수 없다

 

 

 

@Autowired

Spring container에서 타입으로 빈을 검색해서 참조 변수에 자동 주입(DI)

검색된 빈이 n이면, 그 중에 참조변수와 이름이 일치하는 것을 주입.

 

주입 대상이 변수일 때, 검색된 빈이 1 아니면 예외 발생

주입 대상이 배열일 때, 검색된 빈이 n라도 예외 발생X (0개면 예외 발생)

[참고] @Autowired(required=false)일 때, 주입할 빈을 못 찾아도 예외 발생X (null 출력)

 

 

 

@Resource

- Spring container에서 이름으로 빈을 검색해서 참조 변수에 자동 주입(DI)

일치하는 이름의 빈이 없으면, 예외 발생

 

 

 

6-2) 스프링 애너테이션 - @Componet

- <component-scan>@Component가 클래스를 자동 검색해서 빈으로 등록

  @Controller, @Service, @Repository, @ControllerAdvice의 메타 애너테이션 (@Componet 포함)

 

 

6-3) 스프링 애너테이션 - @Value@PropertySource

 

 

ApplicationContext.java

 

 

 

7) 스프링 애너테이션 vs. 표준 애너테이션(JSR-330 자바 제공)

- javax.inject-1.jar - @Inject, @Named, @Qualifier, @Scope, @Singleton

- annotations-api.jar - @Resource, @ManagedBean, @PreDestroy, @PostContruct

  ※ External Libraries, tomcat 9.0 library에 위 파일이 정의되어 있다

 

 

 

8) 빈의 초기화 - <property>setter

- <property>를 이용한 빈 초기화. setter를 이용

 

 

 

8-1) <constructor-arg>를 이용한 빈 초기화. 생성자를 이용

 

 

 

8-2) 빈의 초기화 - <list>, <set>, <map>

 

 

 

반응형