-
05 Spring DI 활용하기(2) - 이론Spring/02 Spring DI와 AOP 2023. 6. 28. 22:22반응형
Spring DI 활용하기(2) - 이론
6) IoC와 DI
- 제어의 역전 (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>
반응형'Spring > 02 Spring DI와 AOP' 카테고리의 다른 글
07 Spring으로 DB다루기 TDD (0) 2023.07.01 06 Spring으로 DB연결하기 (0) 2023.06.30 04 Spring DI 활용하기(1) - 이론 (0) 2023.06.26 03 Spring DI 활용하기-실습 (0) 2023.06.23 02 Spring DI 흉내내기(2) (0) 2023.06.22