스프링 AOP 특징 프록시 기반의 AOP 구현체 스프링 빈에만 AOP를 적용할 수 있다. 모든 AOP 기능을 제공하는 것이 목적이 아니라, 스프링 IoC와 연동하여 엔터프라이즈 애플리케이션에서 가장 흔한 문제(중복코드, 프록시 클래스를 만드는 비용과 수고, 객체들 간 관계 복잡 등등)에 대한 해결책을 제공하는 것이 목적. 프록시 패턴 (기존 코드 변경 없이) 접근 제어 또는 부가 기능 추가 프록시 패턴을 이용하여 기존 코드를 건드리지 않고 성능을 측정해보겠다. @Component public class AppRunner implements ApplicationRunner { @Autowired EventService eventService; //interface가 있다면 interface타입으로 받는게 ..
Aspect-oriented Programming (AOP)은 OOP를 보완하는 수단으로, 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법. 흩어진 관심사 (Crosscutting *Concerns) *Concerns : 비슷한 코드, 비슷한 호출 등등. AOP를 적용 하면? Aspect로 흩어진 것들을 한곳으로 모은다. AOP 주요 개념 Aspect 와 Target Advice Join point 과 Pointcut Aspect : 흩어진 관심사를 한곳으로 모듈화 한 것. Advice : 어떤 일을 해야 하는지에 대한 정보. Join point : 생성자 호출하기 직전, 생성자를 호출했을때, 필드에서 값을 가져갔을때...등등 여러가지 합류점. Pointcut: A라는 클래스에 b라는 메소드를 ..
스프링 EL이란? 스프링 프로젝트 전반에 걸쳐 필요로 하다보니까, Unified EL 에 메소드 호출 기능과, 문자열 템플릿 기능을 추가하여 스프링이 SpEL을 개발하게 된것이다. 객체 그래프를 조회하고 조작하는 기능을 제공한다. Unified EL과 비슷하지만, 메소드 호출을 지원하며, 문자열 템플릿 기능도 제공한다. OGNL, MVEL, JBOss EL 등 자바에서 사용할 수 있는 여러 EL이 있지만, SpEL은 모든 스프링 프로젝트 전반에 걸쳐 사용할 EL로 만들었다. 스프링 3.0 부터 지원. SpEL 구성 ExpressionParser expressionParser = new SpelExpressionParser(); Expression expression = expressionParser...
Converter S 타입을 T 타입으로 변환할 수 있는 매우 일반적인 변환기 상태 정보 없음 == Stateless = 쓰레드세이프 public class EventConverter { public static class StringToEventConverter implements Converter{ @Override public Event convert(String source) { return new Event(Integer.parseInt(source)); }//String에서 Event로 Event/Constructor에 source를 넘긴다. } public static class EventToString implements Converter{ @Override public String con..
org.springframework.validation.DataBinder 기술적인 관점 : 프로퍼티 값을 타켓 객체에 설정하는 기능 사용자 관점 : 사용자 입력값을 애플리케이션 도메인 모델에 동적으로 변환해 넣어주는 기능 해석하면 : 입력값은 대부분 "문자열"인데, 그 값을 객체가 가지고 있는 프로퍼티 타입 (즉, int, long, boolean, Date 등등 ) 심지어, Event,Book 같은 도메인 타입으로도 변환해서 넣어주는 기능. PropertyEditor 스프링 3.0 이전까지 DataBinder가 변환 작업 사용하던 인터페이스 쓰레드 - 세이프 하지 않음 (상태 정보 저장 하고 있음, 따라서 싱글톤 빈으로 등록해서 사용하다가는...) Object와 String 간의 변환만 할 수 있어,..
Validation은 크게 두가지가 있다. JavaBean 기반 Validation (가장 많이 사용) Spring Validation 인터페이스 구현하여 Validation org.springframework.validation.Validatior 애플리케이션에서 사용하는 객체 검증용 인터페이스 특징 어떤 계층과도 관계가 없다. -> 모든 계층(웹, 서비스, 데이터) 에서 사용해도 좋다. 구현체 중 하나로, JSR-303(Bean Validation 1.0), JSR-349(Bean Validation 1.1) 을 지원한다.(LocalValidatorFactoryBean) DataBinder에 들어가 바인딩 할 때 같이 사용되기도 한다. 인터페이스 : org.springframework.validati..