프로그래밍 노트/SPRING

프로젝트 기본 설정 아파치 톰캣에서 제공하는 디스패처 서블릿을 스프링에서 제공하는 디스패처 서블릿으로 변경하는 것부터 작업이 시작된다. ⇒ Spring MVC는 디스패처 서블릿을 확대하여 제공하고 있으며, 기본적으로 아파치 톰캣이 제공하는 디스패처 서블릿기능을 그대로 갖고 있으며, Spring MVC에서 정의한 방식으로 동작될 수 있도록 재정의한 클래스 XML 설정 3.x 까지만 하더라도 XML으로 셋팅하는 방법을 지원했지만, 현재는 JAVA로 셋팅하는 방법도 지원 1. DispatcherServlet 설정하기 기본적으로 Apache Tomcat 안에 ServletJSP 실행에 관련된 기본셋팅이 되어있다. Web.xml 파일이 WebApplication에 없다면 Apache Tomcat이 가지고 있는 w..
Spring ⇒ IoC와 AOP를 지원하는 경량의 컨테이너 프레임워크 개발자가 직접 Servlet 클래스를 작성하지 않고, POJO 만으로 웹 애플리케이션을 구축할 수 있다는 것이 스프링의 특징이다. 컨테이너란? 특정 객체의 생성과 관리를 담당하며 객체 운용에 필요한 다양한 기능을 제공한다. 필요한 객체를 생성하고 객체 간의 의존관계를 관리한다는 점에서 스프링도 일종의 컨테이너라고 할 수 있다. 스프링 컨테이너의 종류 스프링에서는 BeanFactory와 이를 상속한 ApplicationContext 두 가지 컨테이너를 제공한다. BeanFactory: 스프링 설정파일(xml 혹은 java)에 등록된 bean 객체를 생성하고 관리하는 가장 기본적인 컨테이너 기능만 제공한다. 컨테이너가 구동될 때 객체를 생..
애노테이션 기반의 스프링 @AOP 의존성 추가 org.springframework.boot spring-boot-starter-aop 애스팩트 정의 @Aspect 빈으로 등록해야 하니까(컴포넌트 스캔을 사용한다면) @Component도 추가. 포인트컷 정의 @Pointcut(표현식) 주요 표현식 execution @annotation bean 포인트컷 조합 &&, ||, ! @Aspect @Component public class PerfAspect { // Advice + Pointcut @Around("execution(* com.corn..*.EventService.*(..))") public Object logPerf(ProceedingJoinPoint pjp) throws Throwable { ..
스프링 AOP 특징 프록시 기반의 AOP 구현체 스프링 빈에만 AOP를 적용할 수 있다. 모든 AOP 기능을 제공하는 것이 목적이 아니라, 스프링 IoC와 연동하여 엔터프라이즈애플리케이션에서 가장 흔한 문제에 대한 해결책을 제공하는 것이 목적 프록시 패턴 왜? (기존 코드 변경 없이) 접근 제어 또는 부가 기능 추가 기존 코드를 건드리지 않고 성능을 측정해 보자. (프록시 패턴으로) EventService (Subject) public interface EventService { void createEvent(); void publishEvent(); } SimpleEventService (Real Subject) @Service public class SimpleEventService implement..
Aspect-oriented Programming(AOP)는 OOP를 보완하는 수단으로, 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법 흩어진 관심사 (Crosscutting Concerns) AOP를 적용하게 되면? 비즈니스로직이 아닌 공통적이고 반복적인 코드를 처리하기 위한 방법으로 Aspect X, Y, Z를 횡단 관심사(cross-concern)라고도 한다. Logging, Security, Transaction을 Aspect라고 보면 된다. (공통 관심사에 대한 추상적인 명칭) AOP 주요 개념 Aspect와 Target Advice Join point와 Pointcut AOP 구현체 자바 AspectJ 스프링 AOP AOP 적용 방법 컴파일 ⇒ 클래스 로드시, 부하가 생길 수 있음 ..
스프링 EL 이란? 객체 그래프를 조회하고 조작하는 기능을 제공한다. Unified EL과 비슷하지만, 메소드 호출을 지원하며, 문자열 템플릿 기능도 제공한다. 스프링 3.0부터 지원 SpEL 구성 ExpressionParser parser = new SpelExpressionParser() StandardEvaluationContext context = new StandardEvaluationContext(bean) Expression expression = parser.parseExpression("SpEL 표현식"); String value = expression.getValue(context, String.class) 문법 #{"표현식"} ${"프로퍼티"} 표현식은 프로퍼티를 가질 수 있지만, 반..
2020/03/25 - [프로그래밍 노트/SPRING] - [Spring] 데이터 바인딩 - PropertyEditor Converter S타입을 T타입으로 변환할 수 있는 매우 일반적인 변환기 상태 정보 없음 == Stateless == 쓰레드 세이프 ConverterRegistry에 등록해서 사용 public class EventConverter { // Converter 인터페이스를 구현 (Source -> Target 변환) public static class StringToEventConverter implements Converter { @Override public Event convert(String str) { return new Event(Integer.parseInt(str)); } ..
org.springframework.validation.DataBinder 기술적인 관점 : 프로퍼티 값을 타겟 객체에 설정하는 기능 사용자 관점 : 사용자 입력값을 애플리케이션 도메인 모델에 동적으로 변환해 넣어주는 기능 입력값은 대부분 "문자열"인데, 그 값을 객체가 가지고 있는 int, long, Boolean, Date 등 심지어 Event, Block 같은 도메인 타입으로도 변환해서 넣어주는 기능 PropertyEditor 스프링 3.0 이전까지 DataBinder가 변환 작업 사용하던 인터페이스 쓰레드-세이프 하지 않음(상태 정보 저장 하고 있음, 따라서 싱글톤 빈으로 등록해서 쓰면... gg) Object와 String간의 변환만 할 수 있어, 사용 범위가 제한적 임 고전적인 데이터 바인딩 ..
org.springframework.validation.Validator 애플리케이션에서 사용하는 객체 검증용 인터페이스 특징 어떠한 계층과도 관계가 없다 ⇒ 모든 계층(웹, 서비스, 데이터)에서 사용해도 좋다. 구현체 중 하나로, JSR-303(Bean Validation 1.0)과 JSR-349(Bean Validation1.1)을 지원한다. (LocalValidatorFactoryBean) DataBinder에 들어가 바인딩 할 때 같이 사용되기도 한다. 인터페이스 boolean support(Class clazz) : 어떤 타입의 객체를 검증할 때 사용할 것인지 결정함 void validate(Object obj, Error e) : 실제 검증 로직을 이 안에서 구현 구현할 때 Validation..
ResourceLoader 리소스를 읽어오는 기능을 제공하는 인터페이스로, applicationContext가 상속받고 있다. public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver { ... } public interface ResourcePatternResolver extends ResourceLoader { String CLASSPATH_ALL_URL_PREFIX = "classpath*:"; Resource[] getResources(Stri..
깡냉쓰
'프로그래밍 노트/SPRING' 카테고리의 글 목록 (2 Page)