본문 바로가기

반응형

개발/Spring

Null-Safety 스프링 프레임워크 5에 추가된 Null 관련 애노테이션 - @NonNull - @Nullable - @NonNullApi - @NonNullFields 목적 - 툴의 지원을 받아 컴파일 시점에 최대한 NullPointerException을 방지하는 것 더보기
AOP - @AOP 스프링 애노테이션 기반의 스프링 @AOP 1. 의존성 추가 org.springframework.boot spring-boot-starter-aop 2. 애스팩트 정의 package com.bpkim.demospring51; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; @Component @Aspect public class PerfAspect { // Pr.. 더보기
AOP - 프록시 기반 AOP 스프링 AOP 의 특징 - 프록시 기반의 AOP 구현체 - 스프링 빈에만 AOP를 적용할 수 있다. - 모든 AOP 기능을 제공하는 것이 목적이 아니라, 스프링 IoC와 연동하여 엔터프라이즈 애플리케이션에서 가장 흔한 문제에 대한 해결책을 제공하는 것이 목적. 프록시 패턴 - 왜 ? (기존 코드 변경 없이) 접근 제어 또는 부가 기능 추가 - 기존 코드를 건드리지 않고 일을 끼워넣기! 소스코드 - 구현할 함수를 정의한 인터페이스 package com.bpkim.demospring51; public interface EventService { void createEvent(); void publishEvent(); void deleteEvent(); } - 인터페이스를 상속하여 할 일을 선언한 Serive.. 더보기
스프링 AOP - 개념 AOP(Aspect Oriented Programming)는 OOP를 보완하는 수단으로, Aspect를 모듈화 할 수 있는 프로그래밍 기법 흩어진 관심사(Crosscultting Concerns) : 여러 클래스, 여러 메소드에 나타나는 비슷한 코드, 비슷한 필드 예) 트랜잭션 처리 Aspect - 흩어진 관심사들을 각각 모아 독립 적으로 정의 > 모듈화 한 것 - Advice : 해야할 일들 - Pointcut : 어디에 적용해야 하는지 AOP의 주요 개념 - Aspect와 Target(적용이 되는 대상) - Join point와 pointcut ** Join point : 합류점, 메소드 실행 시점, 행성자 호출, 필드 접근전, 필드에 값을 가지고 올때 등등 ** pointcut : 합류점, 메소드 .. 더보기
SpEL(스프링 Expression Language) 스프링 EL 이란 - 객체 그래프를 조회하고 조작하는 기능을 제공한다. - Unified EL과 비슷하지만, 메소드 호출을 지원하며, 문자열 템플릿 기능도 제공한다. - OGNL, MVEL, JBOss EL 등 자바에서 사용할 수 있는 여러 EL이 있지만, SpEL은 모든 스프링 프로젝트 전반에 걸처 사용할 EL로 만들었다. - 스프링 3.0 부터 지원이 가능하다. package com.bpkim.demospring51; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunn.. 더보기
데이터 바인딩 추상화 Converter와 Formatter 1. Converter - S 타입을 T 타입으로 변환할 수 있는 매우 일반적인 변환기. - 상태 정보 없다 / stateless / 스레프 세이프하다 >> 빈으로 등록하여 사용가능 - 빈으로 등록할 때는 ConverterRegister에 등록해서 사용한다. - Converter 소스 package com.bpkim.demospring51; import org.springframework.core.convert.converter.Converter; public class EventConverter { public static class StringToEventConverter implements Converter{ @Override public Event convert(String s) { return .. 더보기
데이터 바인딩 추상화: PropertyEditor org.springframework.validation.DataBinder 데이터 바인딩이란? - 프로퍼티 값을 타겟 객체에 설정하는 기능 - 사용자가 입력한 값을 application domain 객체에 동적으로 할당하는 기능 사용자가 입력한 값은 보통 문자열 객체가 가지고있는 값의 타입은 다양한 스트링, int, 객체 자체 등등 각각에 맞게 변환하여 바인딩 해주는 것. PropertyEditor - 스프링 3.0 이전까지 DataBinder 가 변환 작업 사용하던 인터페이스 - ApplicationContext를 xml 파일로 설정할때, xml 파일에 입력한 문자열을 빈이 가지고 있는 적절한 타입으로 변환하여 넣어줄때 사용되었음. - 쓰레드 세이프 하지 않다. (상태 정보 저장 하고 있다. 따라서 싱.. 더보기
Validation 추상화 Validation - 애플리케이션에서 사용하는 객체 검증용 인터페이스 특징 - 어떤 계층과도 관계 없다 > 모든 계층(웹, 서비스, 데이터) 에서 사용해도 좋다. - 구현체 중 하나로 .JSR-303(Bean Validation 1.0)과 JSR-349(Bean Validation 1.1)을 지원한다(LocalValidatorFactoryBean) - DataBinder에 들어가 바인딩 할 때 같이 사용되기도 한다. 인터페이스 - booleean supports(Class clazz) : 어떤 타입의 객체를 검증할 때 사용할 것인지 결정함 - void validate(Object obj, Errors e) : 실제 검증 로직을 이 안에서 구현 구현할때 ValidationUtils 사용하며 편리함. 1... 더보기

반응형