목록Spring (29)
mojo's Blog
※ 요구사항 분석 기능 목록 - 회원 기능 회원 등록 회원 조회 - 상품 기능 상품 등록 상품 수정 상품 조회 - 주문 기능 상품 주문 주문 내역 조회 주문 취소 - 기타 요구사항 상품은 제고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다. ※ 도메인 모델과 테이블 설계 1. 회원은 여러 상품을 주문할 수 있다. 2. 한 번 주문시 여러 상품을 선택할 수 있으므로 주문과 상품은 다대다 관계이다. 다대다 관계는 RDB, 엔티티에서 거의 사용하지 않으므로, 주문상품이라는 엔티티를 추가해서 다대다 관계를 일대다, 다대일 관계로 설정하였다. 3. 상품은 도서, 음반, 영화로 구분되며 상품이라는 공통 속성을 사용하므로 상속..
※ 빈 스코프란? 스프링 빈은 스프링 컨테이너의 시작과 함께 생성되어서 컨테이너가 종료될 때까지 유지된다. 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. (스코프 : 빈이 존재할 수 있는 범위) 스프링은 다음과 같은 다양한 스코프를 지원한다. 싱글톤 : 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않음 웹 관련 스코프 request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프 session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 application : 웹의 서블릿 컨텍스와 같은 범위로 유지되는 스코프 컴포넌트 스캔을 자동으로 등록하는 방법 @..
빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 에플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료 작업이 필요하다. 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정한다면, 실제로 네트워크에 연결하는 것이 아니고 단순히 문자만 출력하도록 했다. "NetworkClient" 는 애플리케이션 시작 시점에 "connect()" 를 호출해서 연결을 맺어둬야 하고, 애플리케이션이 종료되면 "disConnect()" 를 호출해서 연결을 끊어야 한다. public class BeanLifeCycleTest { @Test public void lifeCycleTest(){ Configurabl..
@Autowired 필드 명, @Qualifier, @Primary 조회할 대상의 빈이 2개 이상일 때 해결 방법은 다음과 같다. @Autowired 필드 명 매칭 @Qualifier -> @Qualifier 끼리 매칭 -> 빈 이름 매칭 @Primary 사용 ※ @Autowired 필드 명 매칭 @Autowired 는 타입 매칭을 시도하고, 이때 여러 빈이 있으면 필드 이름, 파라미터 이름으로 빈 이름을 추가로 매칭한다. @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy;..
다양한 의존관계 주입 방법 의존관계 주입은 크게 4가지 방법이 존재한다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 ① 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입받는 방법이다. 특징은 다음과 같다. 생성자 호출시점에 딱 1번만 호출되는 것이 보장 "불변, 필수" 의존관계에 사용 @Component public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memb..
컴포넌트 스캔과 의존관계 자동 주입 지금까지 스프링 빈을 등록할 때, 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열하였다. 그러나, 이렇게 등록해야 할 스프링 빈이 굉장히 많아질 경우 일일이 등록하기 귀찮으며 설정 정보도 커지고, 누락하는 문제가 발생할 수 있다. 따라서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또, 의존관계도 자동으로 주입하는 "@Autowired" 라는 기능도 제공한다. 우선 아래 코드를 통해 컴포넌트 스캔과 의존관계 자동 주입을 살펴보도록 한다. @Configuration @ComponentScan( excludeFilters = @ComponentScan.Filter(type = F..