[SPRING] DISPATCHER-SERVLET
·
SPRING
DispatcherServlet 정의 서버로 들어오는 모든 요청(Request)을 처리하는 프론트 컨트롤러 (서블릿컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 요청을 받아서 처리해주는 컨트롤러를 프론트컨트롤러라고 정의함) 요청을 받아들여서 적절한 Controller로 요청을 위임해줌 Spring MVC 사용전에는 JSP환경에서는 서블릿 객체를 직접 생성하여 web.xml에 매핑을 해줘야 했으나 Spring MVC를 사용하면서 DispatchServlet이 모든 요청을 핸들링 처리를 해줘서 해당 작업이 필요가 없어짐 요청에 맞는 핸들러로 요청을 Dispatch하고 핸들러 실행 결과를 Http Response형태로 응답해줌 DispatcherServlet 구조 DispatcherServlet은 Ser..
[SPRING] Bean
·
SPRING
정의 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트 즉 Ioc / DI 컨테이너가 관리하는 자바 객체 스프링 컨테이너는 빈의 생존 기간도 관리하며, 빈의 생존기간을 빈 스코프(Bean Scope)라고 정의함 빈 스코프 (Bean Scope) 종류 설명 singleton 컨테이너를 기동할 때 하나의 빈 인스턴스가 만들어지고, 이 후부터 해당 인스턴스를 공유하는 방식, 기본 스코프 prototype 컨테이너에 빈을 요청할 때마다 새로운 빈 인스턴스가 만들어짐, 멀티 스레드 환겨에서 오동작이 발생하지 말아야 하는 빈일 경우 사용 request HTTP 요청이 들어얼 때마다 새로운 빈 인스턴스가 만들어짐, 웹 어플리케이션 만들 때만 사용 가능 session HTTP 세션이 만들어질 때마다 새로운..
[SPRING] 컨테이너 (Container)
·
SPRING
정의 인스턴스의 생명주기를 관리 생성된 인스턴스들에게 추가적인 기능을 제공 SPRING에서 컨테이너(DI / IOC 컨테이너)로 인스턴스 관리시 장점 인스턴스의 스코프를 제어할 수 있음 인스턴스의 생명주기를 제어할 수 있음 AOP방식으로 공통기능을 집어 넣을 수 있음 의존한느 컴포넌트 간의 결합도를 낮춰서 단위테스트를 쉽게 만듬 SPRING에서 제공하는 컨테이너 BeanFactory : IoC / DI에 대한 기본기능을 가지고 있음 ApplicationContext : BeanFactory의 모든 기능을 포함하며, 일반적으로 BeanFactory보다 추천됨 트랜잭션처리, AOP 등에 대한 처리를 할 수 있음, BeanPostProcessor, BeanFactoryPostProcessor 등을 자동으로 등..
[SPRING] JPA 연관관계
·
SPRING
연관관계 매핑 구성 방향 : 단방향 / 양방향이 있음, 방향은 객체관계에서만 존재함, 테이블 관계같은 경우 항상 양방향 다중성 : 다대일, 일대다, 일대일, 다대다와 같은 다중성이 존재 연관관계의 주인 : 객체를 양방향 관계로 만들시, 주인을 지정해야함 연관관계는 객체들의 협력 공동체를 만들기 위하여 필요함, JPA에서 가장 중요한 것은 객체와 테이블을 어떻게 매핑되는지 이해하는 것이므로 연관관계는 중요함 테이블 중심의 설계의 문제 객체를 테이블에 맞추어서 모델링할 경우, 협력관계를 만드릭가 어려움 테이블은 외래키로 조인을 사용하여, 연관된 테이블을 찾고, 객체는 참조를 사용하여 연관된 객체를 찾음 테이블과 객체사이의 이러한 차이로 인한 제약조건이 생김 단방향 연관관계 객체 연관관계 회원 객체는 Memb..
[SPRING] 의존성 주입
·
SPRING
의존성 개념 객체간의 관계를 뜻함, 의존관계 주입 개념 외부에서 객체를 생성해서 넣어주는 것 정의 필요한 객체를 setter나 constructor로 전달 받아서 넣어주는 것 일반적으로 의존성 주입은 SPRING에서 많이 사용되며, 주입방법도 여러가지가 있음 의존성 주입 방법 필드 주입 수정자 주입 생성자 주입 일반적으로 익숙한건 @Autorwired를 통한 필드 주입이 익숙할 듯 (필자는 생성자 주입을 선호함) 필드 주입 @Service public class UserService { @Autowired private UserRepository userRepository } 주입방법중 가장 간단함, 간단해서 막 추가가능(장점이라보기 어려움), 주입 필드를 Final로 정의 불가 수정자 주입 @Servi..
[SPRING] JPA 영속성 컨텍스트
·
SPRING
정의 엔티티를 영구 저장하는 환경 엔티티 매니저로 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 보관하고 관리함 엔티티 생명주기 비영속(new/transient) : 영속성 컨텍스트와 전혀 관계가 없는 상태 영속(managed) : 영속성 컨텍스트에 저장된 상태 준영속(detacted) : 영속성 컨텍스트에 저장되었다가 분리된 상태 삭제(removed) : 삭제된 상태 //객체를 생성한 상태 (비영속) Member member = new member(); member.setId("member1"); member.setUsername("회원1"); //객체를 저장한 상태 (영속) em.persist(member); //엔티티를 영속성 컨텍스트에서 분리 (준영속) em.detach(membe..