Develop/Spring Boot

aop

roalwh 2023. 12. 15. 09:05



@Retention(RetentionPolicy.RUNTIME)
RetentionPolicy.SOURCE : 소스 코드(.java)까지 남아있는다.
RetentionPolicy.CLASS : 클래스 파일(.class)까지 남아있는다.(=바이트 코드)
RetentionPolicy.RUNTIME : 런타임까지 남아있는다.(=사실상 안 사라진다.)

@Target(ElementType.METHOD)
@Target 어노테이션의 사용 방법
@Target 어노테이션을 사용하여 지정할 수 있는 옵션과 대상의 타입은 다음과 같다.
ElementType.ANNOTATION_TYPE : 어노테이션
ElementType.CONSTRUCTOR : 생성자
ElementType.FIELD : 필드(멤버 변수, Enum 상수)
ElementType.LOCALVARIABLE : 지역변수
ElementType.METHOD : 메서드
ElementType.PACKAGE : 패키지
ElementType.PARAMETER : 매개변수(파라미터)
ElementType.TYPE : 타입(클래스, 인터페이스, Enum)
ElementType.TYPE_PARAMETER : 타입 매개변수(제네릭과 같은 매개변수)
ElementType.TYPE_USE : 타입이 사용되는 모든 대상


@Before
메소드가 실행되기 이전에 실행됩니다.
@After
메소드의 종료 후 무조건 실행됩니다. (try-catch에서 finally와 같은 동작)
@After-returning
메소드가 성공적으로 완료되고 리턴한 다음에 실행됩니다.
@After-throwing
메소드 실행 중 예외가 발생하면 실행됩니다. (try-catch에서 catch와 같은 동작)
@Around
메소드 호출 자체를 가로채서 메소드 실행 전후에 처리할 로직을 삽입할 수 있습니다.


@SuppressWarnings()
all : 모든 경고  
cast : 캐스트 연산자 관련 경고
dep-ann : 사용하지 말아야 할 주석 관련 경고
deprecation : 사용하지 말아야 할 메서드 관련 경고
fallthrough : switch문에서 break 누락 관련 경고
finally : 반환하지 않는 finally 블럭 관련 경고
null : null 분석 관련 경고
rawtypes : 제너릭을 사용하는 클래스 매개 변수가 불특정일 때의 경고
unchecked : 검증되지 않은 연산자 관련 경고
unused : 사용하지 않는 코드 관련 경고


ProceedingJoinPoint
Signature getSignature() 호출되는 메서드에 대한 정보를 구한다. 
getName 메서드의 이름을 구한다. 
toLongString() 메서드를 완전하게 표현한 문장을 구한다. (메서드의 리턴 타입, 파라미터 타입이 모두 표시된다.) 
toShortString() 메서드를 축약해서 표현한 문장을 구한다. (기본 구현은 메서드의 이름만을 구한다. 
getDeclaringTypeName
Object getTarget() 대상 객체를 구한다. 
Object[] getArgs() 파라미터의 목록을 구한다. 



얕은 복사는 객체를 새로운 객체로 복사하지만 원본 객체의 주소값을 복사하는 것
깊은 복사는 전체 복사로 참조값의 복사가 아닌 참조된 객체 자체를 복사

'Develop > Spring Boot' 카테고리의 다른 글

루시필터 lucy-xss-servlet-filter  (0) 2023.12.13
정규식  (0) 2023.12.11
@PostConstruct  (0) 2023.12.07
DisconnectableInputStream source reader 에러  (0) 2023.11.23
디자인 패턴  (1) 2023.11.17