Spring 6

[SPRING] Interceptor

Interceptor 정의 컨트롤러의 핸들러는 호출하기 전과 후의 요청과 응답을 참조하여 가공할 수 있게 중간에 가로채서 처리하는 기능 Interceptor 실행하는 시점 Filter는 DispatcherServlet 앞단에 처리되며, Intercepter는 그 후인 Handler와 사이 구간에서 실행이 됨 왠만하면 Spring과 관련된 작업을 구현할 때는 Intercepter를 사용하는게 좋아보임 Interceptor 구성 public interface HandlerInterceptor { boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler); void postHandle(HttpServlet..

SPRING 2021.07.11

[SPRING] DISPATCHER-SERVLET

DispatcherServlet 정의 서버로 들어오는 모든 요청(Request)을 처리하는 프론트 컨트롤러 (서블릿컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 요청을 받아서 처리해주는 컨트롤러를 프론트컨트롤러라고 정의함) 요청을 받아들여서 적절한 Controller로 요청을 위임해줌 Spring MVC 사용전에는 JSP환경에서는 서블릿 객체를 직접 생성하여 web.xml에 매핑을 해줘야 했으나 Spring MVC를 사용하면서 DispatchServlet이 모든 요청을 핸들링 처리를 해줘서 해당 작업이 필요가 없어짐 요청에 맞는 핸들러로 요청을 Dispatch하고 핸들러 실행 결과를 Http Response형태로 응답해줌 DispatcherServlet 구조 DispatcherServlet은 Ser..

SPRING 2021.06.07

[SPRING] Bean

정의 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트 즉 Ioc / DI 컨테이너가 관리하는 자바 객체 스프링 컨테이너는 빈의 생존 기간도 관리하며, 빈의 생존기간을 빈 스코프(Bean Scope)라고 정의함 빈 스코프 (Bean Scope) 종류 설명 singleton 컨테이너를 기동할 때 하나의 빈 인스턴스가 만들어지고, 이 후부터 해당 인스턴스를 공유하는 방식, 기본 스코프 prototype 컨테이너에 빈을 요청할 때마다 새로운 빈 인스턴스가 만들어짐, 멀티 스레드 환겨에서 오동작이 발생하지 말아야 하는 빈일 경우 사용 request HTTP 요청이 들어얼 때마다 새로운 빈 인스턴스가 만들어짐, 웹 어플리케이션 만들 때만 사용 가능 session HTTP 세션이 만들어질 때마다 새로운..

SPRING 2021.05.23

[SPRING] 컨테이너 (Container)

정의 인스턴스의 생명주기를 관리 생성된 인스턴스들에게 추가적인 기능을 제공 SPRING에서 컨테이너(DI / IOC 컨테이너)로 인스턴스 관리시 장점 인스턴스의 스코프를 제어할 수 있음 인스턴스의 생명주기를 제어할 수 있음 AOP방식으로 공통기능을 집어 넣을 수 있음 의존한느 컴포넌트 간의 결합도를 낮춰서 단위테스트를 쉽게 만듬 SPRING에서 제공하는 컨테이너 BeanFactory : IoC / DI에 대한 기본기능을 가지고 있음 ApplicationContext : BeanFactory의 모든 기능을 포함하며, 일반적으로 BeanFactory보다 추천됨 트랜잭션처리, AOP 등에 대한 처리를 할 수 있음, BeanPostProcessor, BeanFactoryPostProcessor 등을 자동으로 등..

SPRING 2021.05.23

[SPRING] 의존성 주입

의존성 개념 객체간의 관계를 뜻함, 의존관계 주입 개념 외부에서 객체를 생성해서 넣어주는 것 정의 필요한 객체를 setter나 constructor로 전달 받아서 넣어주는 것 일반적으로 의존성 주입은 SPRING에서 많이 사용되며, 주입방법도 여러가지가 있음 의존성 주입 방법 필드 주입 수정자 주입 생성자 주입 일반적으로 익숙한건 @Autorwired를 통한 필드 주입이 익숙할 듯 (필자는 생성자 주입을 선호함) 필드 주입 @Service public class UserService { @Autowired private UserRepository userRepository } 주입방법중 가장 간단함, 간단해서 막 추가가능(장점이라보기 어려움), 주입 필드를 Final로 정의 불가 수정자 주입 @Servi..

SPRING 2021.05.17

[SPRING] JPA 영속성 컨텍스트

정의 엔티티를 영구 저장하는 환경 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 보관하고 관리함 엔티티 생명주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태 영속(managed) : 영속성 컨텍스트에 저장된 상태 준영속(detacted) : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제(removed) : 삭제된 상태 //객체를 생성한 상태 (비영속) Member member = new member(); member.setId("member1"); member.setUsername("회원1"); //객체를 저장한 상태 (영속) em.persist(member); //엔티티를 영속성 컨텍스트에서 분리 (준영속) em.detach(membe..

SPRING 2021.05.16