Spring Framework/Spring Core: 70개의 글
컨트롤러 클래스 없이 특정 view에대한 컨트롤러를 추가할 수 있다. 아래와 같이 WebMvConfigurer를 구현하는 클래스를 만들고 addViewControllers(ViewControllerRegistry registry) 메소드를 오버라이딩 하면 된다. @Configuration @EnableWebMvc public class SpringMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { //시작페이지 url을 '/'가 아닌 home으로 registry.addRedirectViewController("/", "home"); } } 위 코드는 ..
자바 웹프로그래밍을 구현하다보면 공통적인 업무를 추가해야할 것들이 많다. 공통적인 업무에는 로그인처리(세션체크), pc웹과 모바일웹의 분기, 로그 확인, 페이지 인코딩 변환, 권한체크, XSS(Cross site script)방어 등이 있는데 이러한 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지게 되고 업무량이 상당히 증가할 것이다. 이러한 공통업무를 프로그램 흐름에서 앞, 중간, 뒤에 추가하여 자동으로 처리할 수 있는 방법이 있는데 서블릿에서 지원하는 서블릿 필터, 스프링 프레임워크를 사용하면 쓸 수 있는 인터셉터, AOP가 있다. 앞서 AOP개념을 정리할 때 언급한 것처럼 개발자는 좀더 핵심로직에 집중하고, 부가로직으로부터 자유로워지게 도와주는 역할을 한다. 그렇다면..
Interceptor 브라우저 - DS - Interceptor - Control - dispatcher servelt과 controller 사이에 존재하여 요청을 가로챈다 - 모든 페이지마다 동일한 기능의 제어가 가능 인터셉터를 통해 할 수 있는 대표적 3가지 1 처리시간 체크 ( DB에 넣어 통계를 넣는다) 2 인증 체크 3 인가 체크를 할 수 있따. 1. 웹 요청 처리 시간을 처리하는 Interceptor 만들기 step1. MeasuringInterceptor.java public class MeasuringInterceptor extends HandlerInterceptorAdapter{ @Override public boolean preHandle(HttpServletRequest re..
Spring Logging (Interceptor로 Request, Response body json 값 로깅하기) 스프링 프로젝트를 하면서 기존에는 LoggingAspect를 만들어서 Aspect파일에서 parameter값과 body값을 찍어주고 있었다. response 값도 찍어주기 위해 여러가지 찾아보면서 공부하던 와중에 Filter와 Interceptor, AOP의 구조를 다시 공부하는데 Interceptor의 인자로 HttpServletRequest, HttpServletResponse가 들어오는 것을 보고 response, request 로그를 Interceptor로 찍어야 하는 것이 맞는 구조라는 것을 그제야 깨달았다. 1. Filter, Interceptor, AOP 구조 아래 갓대희님 블..
[Spring] Filter, Interceptor, AOP 차이 및 정리 안녕하세요. 갓대희 입니다. 이번 포스팅은 [ [Spring] 필터, 인터셉터, AOP 정리 ] 입니다. : ) 공통 프로세스에 대한 고민 자바 웹 개발을 하다보면, 공통적으로 처리해야 할 업무들이 많다. 예를들어 로그인 관련(세션체크)처리, 권한체크, XSS(Cross site script)방어, pc와 모바일웹의 분기처리, 로그, 페이지 인코딩 변환 등이 있다. 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수도있으며, 소스 관리도 되지 않는다. 즉, 공통 부분은 빼서 따로 관리하는게 좋다. 이러한 공통업무를 프로그램 흐름의 앞, 중간, 뒤에 ..
AspectJ Weaver를 사용한 애노테이션 기반의 스프링 AOP 구현 방법 AOP란? - Aspect Oriented Programming : 관점 지향 프로그래밍 - OOP 와 분리된 개념이 아니라, OOP에 기초를 두는 프로그래밍 방식 - 하나의 프로그램을 관점(혹은 관심사)라는 논리적인 단위로 분리하여 관리하는 개념 - 로깅, 감사, 선언적 트랜젝션, 보안, 캐싱 등 다양한 곳에서 사용된다. AOP 용어 - Joint Point : 모듈이 삽입되어 동작하게 되는 특정 위치(메서드 호출 등) - Point Cut : 다양한 Joint Point 중에 어떤 것을 사용할지 선택 - Advice : Joint Point에 삽입되어 동작할 수 있는 코드 - Weaving : Advice를 핵심 로직 코드..
AspectJ Weaver를 사용한 XML 기반의 스프링 AOP 구현 방법 AOP란? - Aspect Oriented Programming : 관점 지향 프로그래밍 - OOP 와 분리된 개념이 아니라, OOP에 기초를 두는 프로그래밍 방식 - 하나의 프로그램을 관점(혹은 관심사)라는 논리적인 단위로 분리하여 관리하는 개념 - 로깅, 감사, 선언적 트랜젝션, 보안, 캐싱 등 다양한 곳에서 사용된다. AOP 용어 - Joint Point : 모듈이 삽입되어 동작하게 되는 특정 위치(메서드 호출 등) - Point Cut : 다양한 Joint Point 중에 어떤 것을 사용할지 선택 - Advice : Joint Point에 삽입되어 동작할 수 있는 코드 - Weaving : Advice를 핵심 로직 코드에 ..
[Spring] @Component 애노테이션 및 함께 사용하는 애노테이션 정리 스프링 빈 설정 XML 파일에 나 자바 @Configuration 클래스에서 @Bean을 붙여 빈을 등록하던 것처럼 빈 클래스에 @Component 애노테이션을 붙여 빈을 등록할 수 있다. 즉 @Component를 사용해서 빈 설정 파일이 아니라 빈 클래스에서 빈을 직접 등록할 수 있다. Component Scan 설정 @Component를 붙인 클래스를 스캔할 수 있도록 설정해 주어야 한다. 1) XML 설정을 사용할 경우 태그의 base-package에 스캔할 패키지를 설정한다. 패키지가 여러개인 경우 를 여러개 작성할 수 있다. 2) @Configuration 설정을 사용할 경우 @Configuration // 지정된 ..
[Spring] 애노테이션을 이용한 빈 설정 방법 정리 빈 설정을 하기 위해 사용되는 스프링 애노테이션 @Required, @Autowired, @Qualifier, @Value과 JSR-250 애노테이션 @PostConstruct, @PreDestroy, @Resource에 대해 알아보자 이 애노테이션들을 사용해 기존에 XML 빈 설정 파일에 모두 작성하던 빈 설정을 빈 클래스에 직접 설정할 수 있다. XML 설정에 애노테이션 빈 설정을 사용하기 위한 코드 추가 context 네임 스페이스와 코드를 추가한다. 이렇게 설정하면 빈 설정을 XML 파일이 아닌 빈 클래스의 애노테이션을 검색해 반영한다. @Required - setter에 붙여 반드시 주입해야하는 프로퍼티로 설정하는 애노테이션 - Spring..
[Spring] 스프링 XML 설정 → 애노테이션 설정 변환 방법 스프링 프레임워크를 사용은 XML 설정을 이용하는 방법과 자바 애노테이션 기반의 설정을 이용하는 두 가지 방법으로 구분할 수 있다. (참고 - 스프링 XML 설정 방법 : [Spring] 스프링 XML 설정 파일 작성 방법 정리) 본 글에서는 스프링의 XML 설정을 애노테이션 설정으로 변환하는 방법에 대해 다룬다. 📄 목차 1. 스프링 애노테이션 기반 설정 기본 포맷 2. 기본적인 빈 설정 방법 - 자동 주입 설정 - autowire 속성 3. DI(Dependency Injection) 설정 - 생성자 주입 - 프로퍼티 주입 - 프로퍼티 주입 - List 타입 - 프로퍼티 주입 - Map 타입 4. ApplicationContext 객체..