서블릿 애플리케이션 스프링 연동하기 지금까지 만든 Servlet을 활용하여 스프링이 제공하는 IoC 컨테이너와 연동해보자. 서블릿에서 스프링이 제공하는 IoC 컨테이너 활용하는 방법 애플리케이션 컨텍스트를 서블릿 컨텍스트에 등록 후 IoC 컨테이너를 활용해보자. pom.xml에 dependency 추가 스프링이 제공하는 IoC 컨테이너를 활용하기 위해선 의존성이 필요하다(spring-webmvc) org.springframework spring-webmvc 5.1.3.RELEASE 리스너 추가 우리가 만든 서블릿 애플리케이션의 생명주기에 맞추어 애플리케이션 컨텍스트(IoC 컨테이너)를 등록해주기 위해서는 스프링이 제공해주는 리스너가 필요하다. org.springframework.web.context.Co..
서블릿 리스너와 필터 서블릿 리스너 서블릿 컨테이너에서 발생하는 주요 이벤트를 감지하고 각 이벤트에 특별한 작업이 필요한 경우에 사용한다. 서블릿 컨텍스트 수준의 이벤트 컨텍스트 라이프사이클 이벤트 컨테스트 라이프사이클 이벤트의 리스너를 만들어보자 리스너 public class MyListener implements ServletContextListener { //리스너 초기 설정 @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("Context Initialized"); sce.getServletContext().setAttribute("name", "mesung"); } @Override publ..
서블릿 애플리케이션 개발 maven 프로젝트 생성 pom.xml 간략 설명 junit junit 4.11 test javax.servlet javax.servlet-api 4.0.1 provided JUnit Scope : test 소스 classpath 에서는 사용 못하고 오롯이 테스트를 실행할 때만 사용이 가능하다. Servlet Scope : provided 이 의존성을 언제 어떻게 classpath에 넣고 쓸것이냐의 범위를 뜻한다. 코딩 시점에는 사용이 가능하나, 런타임 시점(war 패키징 시점)에는 classpath에서 제외된다. 해당 API는 어딘가(컨테이너)에서 제공이 되어진다는 뜻이다. 이로 인해서 런타임 시점에서는 classpath에서 제외되도 괜찮다는 것이다. 소스 패키지 설정 File..
서블릿 애플리케이션 서블릿 한 프로세스를 공유하는 스레드를 만들어서 요청을 처리한다. 이로인해, 빠르다는 장점을 가지고 있다. 서블릿 엔진 또는 서블릿 컨테이너 세션 관리 네트워크 서비스 MIME 기반 메시지 인코딩 디코딩 서블릿 생명주기 관리 서블릿 애플리케이션 실행 서블릿 애플리케이션은 서블릿 컨테이너가 실행할 수 있으므로, 반드시 서블릿 컨테이너를 사용해야 한다. 서블릿 컨테이너가 서블릿 애플리케이션 실행하는 방법(서블릿의 생명주기) init() : 최초 요청을 서블릿 컨테이너가 받았고, 요청을 처리할 서블릿 인스턴스의 init()을 호출하여 초기화 한다. 최초 요청을 받았을 때 한번 초기화 하고 나면 그 다음부터는 이 과정을 생략한다. 서블릿을 요청한 다음부터는 클라이언트의 요청을 처리할 수 있다..
스프링 AOP: @AOP Spring AOP 구성 SimpleEventService(Real Subject)가 Bean으로 등록된다 BeanPostProcessor(Bean을 가공할 수 있는 LifeCycle 인터페이스)를 구현한 AbstractAutoProxyCreator로 Real Subject Bean을 감싸는 Proxy Bean을 만든다. 해당 Proxy Bean을 Real Subject Bean 대신에 등록을 해준다. 즉, Spring Boot로 인해 Proxy Bean을 동적으로 만들어주고, 구현한 Aspect가 Proxy 역할을 하는 것이다. Aspect내에서는 해야할 일(Advice)들을 개발자 재량에 따라 구현하면 되는 것이다. 그럼 이제 Spring Boot에서 제공하는 Proxy 기반..
스프링 AOP: 프록시 기반 AOP 스프링 AOP 특징 프록시 기반의 AOP 구현체이다. 스프링 Bean에만 AOP를 적용할 수 있다. 모든 AOP의 기능을 제공하는 것이 목적이 아니라, 스프링 IoC와 엔터프라이즈 애플리케이션에서 가장 흔한 문제에 대한 해결책을 제공하는 것이 목적이다. 프록시 패턴 Real Subject : 원래 해야할 일 Proxy : 원래 해야할 일을 참조 즉, Subject의 타입은 Proxy를 사용하고 Proxy는 Real Subject를 감싸서 실제 클라이언트의 요청을 처리하게 된다. 이렇게 하는 이유는? 접근 제어 혹은 유연한 부가 기능 추가 때문이다. 예제를 통해 살펴보자 EventService : Subject SimpleEventService : Real Subject..
스프링 AOP: 개념 소개 스프링 AOP란 AOP란, 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법 OOP를 더 잘하게끔 도와주는 것이다. 그림을 통해 살펴보자 그려진 선들은 각각의 Concems을 칭한다. Concems란, 비슷한 코드들을 말하는 데, 예를 들면 트랜잭션 처리나 로깅 처리 하는 것들을 일컬어 말하는 것이다. 비슷한 코드 즉, Concems들이 각각 클래스에 배치 되는데 이것들이 만약 수정이 필요하게 되면 우리는 각각의 클래스에 소스코드를 모두 수정해야하는 비효율적인 작업을 해야한다. 결과적으로 유지보수하는데 쉽지가 않다. 그래서 AOP는 이런 문제를 Aspect를 활용해서 해결한다. 즉, 흩어져있는 Concems를 한곳에 모으는 것이다. AOP가 Aspect를 활용 각 Con..
등록/수정/조회 API를 만들자 본격저으로 등록, 수정, 삭제 기능을 만들어보자 등록 기능을 만들어보자 먼저 클래스들을 만들자 Controller : PostApiController DTO : PostsSaveRequestDto Service : PostsService //Controller package com.mesung.book.springboot.web; import com.mesung.book.springboot.service.posts.PostsService; import com.mesung.book.springboot.web.dto.PostsSaveRequestDto; import lombok.RequiredArgsConstructor; import org.springframework.web..
- Total
- Today
- Yesterday
- ifPresent
- jdk버전
- 자바8
- springboot
- @Lazy
- 스프링부트
- java
- 빌더 패턴
- junit
- try with resources
- effectivejava
- package-private
- Effective Java
- 인프런
- 빈 순환 참조
- 정적팩터리메서드
- mustache
- 연관관계
- try catch finally
- 이펙티브 자바
- 점층적 생성 패턴
- 생성자
- flatMap
- Spring
- JPA
- 복사 팩토리
- java8
- 팩토리 메소드 패턴
- 김영한
- 이펙티브자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |