본문 바로가기

Spring Boot/Core7

Null-safety Null-Safety 스프링 프레임워크 5에 추가된 Null 관련 애노테이션 @NonNull @Nullable @NonNullApi // 패키지 이하의 모든 인자, 리턴타입 모두 NonNull 설정 @NonNullFileds 툴의 지원을 받아 커파일 시점에 최대한 NPE(Null PointerException)을 방지하기 위해 추가 되었습니다. 2022. 8. 1.
스프링 AOP Spring AOP (Aspect-oriented Programming) OOP를 보완하는 수단으로, 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법 흩어진 관심사 (Crosscutting Concerns) Class A { Aspect X, Aspect Y, Aspect Z} Class B { Aspect X, Aspect Y, Aspect Y} Class C { Aspect X, Aspect Z} 각 클래스에서 중복된 관심사를 갖는 경우에 AOP를 적용하면 Aspect X {A,B,C} Aspect Y {A,B} Aspect Z {A,C} 다음과 같이 Aspect들로 모듈화 할 수 있다. AOP 주요개념 Aspect와 Target Advice(해야할 일들) Join point와 Pointcu.. 2022. 8. 1.
SpEL SpEL(Spring Expression Language) 객체 그래프를 조회하고 조작하는 기능을 제공 Unified EL과 비슷하지만, 메소드 호출 지원 및 문자열 템플릿 기능도 제공 OGNL, MVEL, JBOssEL 등 자바에서 사용가능한 여러 EL들이 있지만, SpEL은 모든 스프링 프로젝트 전반 사용하는 EL 스프링 3.0부터 지원 SpEL 구성 ExpresstionParser parser = new SpelExpressionParser() StandardEvalutationContext context = new StandardEvaluationContext(bean) Expression expression = parser.parseExpression("SpEL 표현식") String value.. 2022. 7. 30.
데이터 바인딩 추상화 데이터 바인딩이란 ? 기술적인 관점: 프로퍼티 값을 타겟 객체에 설정하는 기능 사용자 관점: 사용자 입력값을 애플리케이션 도메인 모델에 동적으로 변환해 넣어주는 기능 -> 입력 값인 대부분 "문자열"로 가지고 있고, 그 값을 객체의 int, long, Boolean, Date, Event, Book 같은 도메인 타입으로 변환해서 넣어주는 기능 예) 책 구매시 "제목" : "데이터 바인딩", "개수" : "3" 처럼 문자열 입력시 객체는 제목은 String, 개수는 int로 할당 해주는 것입니다. ProPertyEditer 스프링 3.0 이전 까지 DataBinder가 변환 작업 사용하던 인터페이스 Thread Safe하지 않음 -> 상태 정보를 저장하고 있기 때문에 싱글톤 빈으로 등록해서 사용시 문제가 .. 2022. 7. 26.
Validation 추상화 애플리케이션에서 사용하는 객체 검증용 인터페이스 특징 어떤 계층과도 관계가 없다 -> 모든 계층(웹,서비스,데이터)에서 사용가능 DataBinder에 들어가 바인딩 할 때 같이 사용되기도 한다. 인터페이스 boolean supports(Class clazz): 어떤 타입의 객체를 검증할 때 사용할 것인지 결정함 void validate(Object obj, Errors e): 실제 검증 로직을 이 안에서 구현 구현할 때 ValidationUtils 이용시 편리 스프링 부트 2.0.5이상 버전 사용시 LocalValidatorFactoryBean를 빈으로 자동 등록 간단한 검증은 hibernate-validator로 Entity Field에 @Min, @Email, @NotNull등 annotation을 .. 2022. 7. 25.