스프링 조금

의존 자동 주입
 

  • 의존을 주입할 대상에 @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를 주입받아 사용한다.