의존성
- 클래스 의존(구현 의존) : 사용되는 객체 클래스를 변경할 경우 사용하는 객체 클래스에서 수정이 요구됨
- 인터페이스 의존 : 인터페이스만 수정하면 되기에 클래스 의존에 비해 수정을 줄일 수 있음
DI 컨테이너
- 임의로 구현한 클래스를 인스턴스로 만들어주는 기능을 제공
규칙
-인터페이스를 이용하여 의존성 생성
-인스턴스를 명시적으로 생성하지 않기
-어노테이션을 클래스에 부여
-스프링 플레임워크에서 인스턴스 생성
-인스턴스를 이용하고 싶은 곳에 어노테이션 부여
어노테이션 | 개요 |
---|---|
@Controller | 인스턴스 생성 지시, 스프링 MVC를 이용할 때 컨트롤러에 부여 |
@Service | 인스턴스 생성 지시, 트랜잭션 경계가 되는 도메인 기능에 부여 |
@Repository | 인스턴스 생성 지시, 데이터베이스 액세스 기능에 부여 |
@Component | 위 용도 이외의 클래스에 부여 |
어노테이션
-주석을 의미하는 영어 표현
-'@xxx' 형태로 작성
-외부 SW에 필요한 처리 내용 전달
레이어
레이어 | 개요 | 어노테이션 |
---|---|---|
애플리케이션 레이어 | 클라이언트와 데이터 입출력 제어 | @Controller |
도메인 레이어 | 업무 처리 수행 | @Service |
인프라스트럭처 레이어 | 데이터 베이스에 대한 데이터 영속성 등을 담당 | @Repository |
용어 | 내용 |
---|---|
Advice | 횡단적 관심사 구현(메서드), 로그 출력, 트랜잭션 제어 등 - 종류: Before, After Returning, After Throwing, After, Around |
Aspect | Advice 를 정리한 것(클래스) |
JoinPoint | Advice를 중심적 관심사에 적용하는 타이밍, 메서드(생성자) 실행 전후 등 |
Pointcut | Advice를 삽입할 수 있는 위치 |
Interceptor | 처리의 제어를 인터셉트하기 위한 프로그램 |
Target | Advice가 도입되는 대상 |