Last updated
Last updated
스테레오 타입 어노테이션 이란?
클래스에 붙여서 해당 클래스가 컴포넌트 스캐닝의 대상고, 스프링에 의해서 관리 될 것임을 표시한다. 즉 <beans> XML 설정 파일에서 <bean>으로 선언한 것과 같은 효과를 낸다. : 자동 빈등록
@Conponent : 메타 어노테이션. 다른 모든 스프링 스테레오타입 어노테이션 및 커스텀 qualifier 어노테이션의 부모 어노테이션, 특정 타입을 정하기 힘든 계층 분류일 경우 사용
@Service : 상태없는 서비스 컨포넌트
@Repository : 저장소 컴포넌트(DAO등.)
@Aspect : AspectJ의 어스펙트.
@Controller : Spring MVC 컨트롤러.
@Repository
annotation(또한 데이터 접근 개체 또는 DAO로 알려진) 저장소의 고정방식이나 역할을 충족하는 모든 클래스에 대한 marker입니다. 이 마커의 사용 중에는 설명 된 자동 번역이 있습니다.
spring은 더 많은 스테레오 타입 주석을 제공합니다 @Component
, @Service
하고 @Controller
. @Component
는 Spring 관리 컴포넌트의 일반적인 스테레오 타입이다. @Repository
, @Service
및 @Controller
는 @Component
구체적인 사용 사례 (지속성,서비스, 프리젠 테이션 레이어에 에 대한 각각)의 특수화이다. 따라서 @Component
로 구성 요소 클래스에 주석을 달 수 있지만 대신에 @Repository
, @Service
또는 @Controller
로 annotation 함으로써, 당신의 클래스가 더 적절 도구에 의해 처리에하거나 항목과 연결하는데 더 적합합니다.
예를 들어, 이러한 스테레오 타입 주석은 pointcuts를 위한 이상적인 타겟을 만듭니다. @Repository
, @Service
그리고 @Controller
은 스프링 프레임 워크의 향후 릴리스에서 추가적인 의미를 전달할 수도있다. 따라서, 당신이@Component
또는 @Service
사이에서 선택을 고민한다면 귀하의 서비스 계층에 대해 @Service
명확하게 더 나은 선택입니다. 마찬가지로 앞에서 설명한 것처럼 이제는 @Repository
지속성 계층에서 자동 예외 변환의 표식으로 지원됩니다.
<AOP용어>
조인포인트(Joinpoint) : 클라이언트가 호출하는 모든 비즈니스 메소드, 조인포인트 중에서 포인트컷되기 때문에 포인트컷의 후보로 생각할 수 있다.
포인트컷(Pointcut) : 특정 조건에 의해 필터링된 조인포인트, 수많은 조인포인트 중에 특정 메소드에서만 횡단 공통기능을 수행시키기 위해서 사용한다.
표현식 : 리턴타입 패키지경로 클래스명 메소드명(매개변수)
어드바이스(Advice) : 횡단 관심에 해당하는 공통 기능의 코드, 독립된 클래스의 메소드로 작성한다.
어드바이스의 동작 시점
위빙(Weaving) : 포인트컷으로 지정한 핵심 관심 메소드가 호출될 때, 어드바이스에 해당하는 횡단 관심 메소드가 삽입되는 과정을 의미한다. 이를 통해 비즈니스 메소드를 수정하지 않고도 횡단 관심에 해당하는 기능을 추가하거나 변경이 가능해진다.
애스팩트(Aspect) : 포인트컷과 어드바이스의 결합이다. 어떤 포인트컷 메소드에 대해 어떤 어드바이스 메소드를 실행할지 결정한다.
동작시점
설명
Before
메소드 실행 전에 동작
After
메소드 실행 후에 동작
After-returning
메소드가 정상적으로 실행된 후에 동작
After-throwing
예외가 발생한 후에 동작
Around
메소드 호출 이전, 이후, 예외발생 등 모든 시점에서 동작