@Bean, @Controller, @Service 등singleton / prototype / request@PostConstruct(빈 생성 시점) / @PreDestroy(빈 파괴 시점) AOP : 특정 시점 (함수 호출 전, 후 등) 에 공통적인 처리 필요 시 사용 (로깅 / 트랜잭션 / 인증 등)
Aspect : 여러 클래스나 기능에 걸쳐서 있는 관심사, 그것들을 모듈화Advice : 조언, AOP에서 실제로 적용하는 기능을 뜻함 (로깅, 트랜잭션, 인증 등)Join Point : 모듈화된 특정 기능이 실행될 수 있는 연결 포인트 (연결 가능 지점)Pointcut : Join Point 중에서 해당 Aspect를 적용할 대상을 뽑을 '조건식'Target Object : Advice가 적용될 대상 오브젝트Weaving : Advice를 비즈니스 로직 코드에 삽입하는 것AOP 절차
AspectPointcut 선언 및 결합 : 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를 항상 할 수 있도록 경고