전체 글 썸네일형 리스트형 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... 더보기 Resource 추상화 Resource 추상화 특징 - java.net.URL 을 추상화 한 것. - 스프링 내부에서 많이 사용하는 인터페이스 java.net.URL을 왜 추상화 했을까?? - java.net.URL 는 classpath 기준으로 가져오는 것이 없었다. - ServletContext를 기준으로 상대 경로를 읽어오는 기능이 부족 - 새로운 핸들러를 등록하여 URL 접미사를 만들어 사용할 수는 있지만 구현이 복잡하고 편의성 메소드가 부족하다! 이러한 이유로 Resource를 만들었다. 구현체 - UriResource : java.net.URL 참고, 기본으로 지원하는 프로토콜 http, https, ftp, file, jar - ClassPathResource : 지원하는 접두어 classpath - FileSys.. 더보기 Ioc 컨테이너 - ResourceLoader ResourceLoader - 리소스를 읽어오는 기능을 제공하는 인터페이스 리소스 로더의 역할을 한다. ApplicationContext extends ResourceLoader >> ApplicationContext 를 받아서 사용할 수 도 있고, ResourceLoader을 받아서 할 수 도있다. 명확하게 ResourceLoader 을 받아서 하는 것을 추천한다. 1. ResourceLoader을 이용해 리소스 파일 읽어오기 1) 클래스패스로 읽어오기 - 리소스 파일 생성 - 소스 package com.bpkim.demospring51; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.bo.. 더보기 이전 1 ··· 24 25 26 27 28 29 30 ··· 39 다음