@Bean
, @Controller
, @Service
등singleton
/ prototype
/ request
@PostConstruct(빈 생성 시점)
/ @PreDestroy(빈 파괴 시점)
AOP : 특정 시점 (함수 호출 전, 후 등) 에 공통적인 처리 필요 시 사용 (로깅 / 트랜잭션 / 인증 등)
Aspect
: 여러 클래스나 기능에 걸쳐서 있는 관심사, 그것들을 모듈화Advice
: 조언, AOP에서 실제로 적용하는 기능을 뜻함 (로깅, 트랜잭션, 인증 등)Join Point
: 모듈화된 특정 기능이 실행될 수 있는 연결 포인트 (연결 가능 지점)Pointcut
: Join Point
중에서 해당 Aspect
를 적용할 대상을 뽑을 '조건식'Target Object
: Advice
가 적용될 대상 오브젝트Weaving
: Advice
를 비즈니스 로직 코드에 삽입하는 것AOP 절차
Aspect
Pointcut
선언 및 결합 : Aspect 적용 대상 지정Advice
정의 : Pointcut
의 특정 시점에 실행될 액션을 지정Before
(해당 Pointcut
의 실행 이전)AfterReturning
(해당 Pointcut
의 실행 이후 Return
까지 반환되었을 시)Around
(해당 Pointcut
의 전/후) Validation : 유효성 검증, 사용자 또는 서버의 요청 (http request)
검수
Spring Validation
Java Bean Validation
: JavaBean
내에 Annotation
으로 검증 방법을 명시, 가장 많이 활용Spring Validator
인터페이스 구현을 통해 ValidationValidation 수행 시 주의사항 및 패턴
exception
을 throw 하는 것이 처리가 편함실무 활용 패턴 (주관적)
DTO
에서 Java Bean Validation
으로 단순 데이터 1차 검증Custom Exception
throw사용자나 외부 서버의 요청 데이터를 도메인 객체에 저장, 프로그램 Request
에 담아주는 것
Converter<S, T> Interface : S(Source)
타입을 받아 T(Target)
타입으로 변환해주는 인터페이스
Formatter : 특정 객체 <-> String
간의 변환 담당
Expression Language (표현 언어)
: 짧고 간단한 문법을 통해 필요한 데이터나 설정 값을 얻어올 수 있게 하는 특별한 형태의 표현식에 가까운 간편한 언어
@Value("${config.value}")
와 같은 방식으로 설정값을 주입 받는데 활용SpEL의 값 평가 (evaluation)
SpelParser
는 "" 안에 들어 있는 문자를 평가(evaluation) 하여 결과값을 만들어냄
Bean
의 Property
를 설정할 때 사용하는 방식
#{<Expression String>}
방식으로 property
를 설정, 각종 테스트 등에서도 활용
Null
체크를 통해 NPE(NullPointerException)
를 방지, 정확한 에러 위치 확인 필요
@NonNull Annotation
: 해당 값/함수가 Null
이 아님을 나타냄
method 파라미터
에 붙일 경우 : null
데이터가 들어오는 것을 방지property
에 붙이는 경우 : null
을 저장하는 경우 경고method
에 붙일 경우 : null
리턴 시 경고, 응답값을 저장/활용하는 쪽도 NonNull
이라고 신뢰@Nullable Annotaion
: 해당 데이터가 Null
일 수 있음을 명시
Annotation
이 붙은 값을 사용 시 null check를 항상 할 수 있도록 경고