의존 자동 주입
- 의존을 주입할 대상에 @Autowired 애노테이션을 붙인다.
- @Autowired 애노테이션을 필드나 세터 메서드에 붙이면 스프링은 타입이 일치하는 빈 객체를 찾아서 주입한다.
- 자동 주입 가능한 빈이 두 개 이상이면 @Qualifier 애노테이션 이용해서 한정한다.
- 빈 설정에 @Qualifier 애노테이션이 없으면 빈의 이름을 한정자로 지정한다.
컴포넌트 스캔
- 스프링이 직접 클래스를 검색해서 빈으로 등록해주는 기능
- 컴포넌트 스캔 대상 애노테이션
- @Component
- @Controller
- @Service
- @Repository
- @Aspect
- @Configuration
- 빈의 범위를 프로토타입으로 지정하면 빈 객체를 구할 때마다 매번 새로운 객체 생성
- @Scope("prototype")
- 프로토타입 범위 빈 사용할 때에는 빈 객체의 소멸 처리 직접 해주어야 함 (완전한 라이프사이클을 따르지 않음)
AOP
- 스프링이 AOP 구현할 때 사용하는 모듈: aspectjweaver (AOP 설정에 필요한 애노테이션 제공)
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.13</version>
</dependency>
- 스프링 프레임워크 AOP 기능은 spring-aop 모듈이 제공, 이는 spring-context 모듈 추가시 의존 대상에 포함
- 프록시: 핵심 기능은 다른 객체에 위임하고 부가적인 기능을 제공하는 객체
- 특징: 핵심 기능은 구현하지 않는다
- AOP 주요 용어
- Aspect: 여러 객체에 공통으로 적용되는 기능
- Advice: 언제 공통 관심 기능을 핵심 기능에 적용할지
- Joinpoint: Advice 적용 가능 지점
- Poincut: Joinpoint의 부분집합 (실제 Advice 적용 Joinpoint)
- Weaving: Advice를 핵심 로직 코드에 적용하는 것
DB
- 스프링이 제공하는 DB 연동 기능은 DataSource를 사용해서 DB Connection 구한다.
- DB 연동에 사용할 DataSource를 스프링 빈으로 등록하고 DB 연동 기능을 구현한 빈 객체는 DataSource를 주입받아 사용한다.
'TIL > BackEnd' 카테고리의 다른 글
JPA (Java Persistence API) (0) | 2023.05.10 |
---|---|
JPA - Oracle 데이터베이스 생성 (0) | 2023.05.08 |
Transaction (0) | 2023.05.04 |
[Spring] 예외처리: @ExceptionHandler, SimpleMappingExceptionResolver (0) | 2023.04.27 |
@Autowired와 @Value를 통한 주입의 차이 (0) | 2023.04.26 |