회원 관리 예제 웹 애플리케이션 계층 구조를 보고 백엔드 관점에서 회원 관리 예제를 적용해보자. 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 구현 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 : 비즈니스 도메인 객체 (회원, 주문, 쿠폰 등 데이터베이스에서 저장하고 관리되는 모델) 비즈니스 요구사항 정리 데이터 : 회원 ID, 이름 기능 : 회원 등록, 조회 데이터 저장소가 아직 선정되지 않음 클래스 의존 관계는 데이터베이스가 선정되지 않았다는 가정이므로, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계하자. 개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 회원 도메인과 리포지토리 만들기 pu..
메시지, 국제화 메시지 : 여러 화면에서 동일한 명칭으로 하드 코딩되어 있는 것을 한 곳에서 관리하는 기능을 의미한다. 예를 들어 messages.properties라는 메시지 관리용 파일을 만들고 각 HTML은 해당 데이터를 key 값으로 불러서 사용하는 것이다. 다음 예시를 살펴 보자. item = 상품 item.id = 상품 ID item.itemName = 상품명 item.price = 가격 item.quantity = 수량 messages.properties라는 메시지 관리용 파일 해당 label을 각 HTML에서 렌더링하여 사용한다. 국제화 : 메시지에서 설정한 파일을 각 나라별로 관리하여 서비스를 제공하는 것을 국제화라고 한다. 예를 들어 message_en.properties와 messag..
의존 관계 주입 II 개발을 하다보면 대부분 불변으로 설계를 하고, 생성자 주입으로 final 키워드를 사용하게 된다. 이 부분을 필드 주입처럼 편하게 사용할 수 있는 방법이 있다. 롬복에 대해서 간단하게 정리하고 이어서 의존 관계 주입에 대해 알아보자. Lombok @Getter/@Setter : 게터 세터 기능을 제공한다. @NoArgsConstructor : 빈 생성자(기본 생성자)를 생성해준다. @AllArgsConstructor : 필드 값을 모두 포함한 생성자를 생성해준다. @RequiredArgsConstructor :final 필드와 @NonNull이 붙은 필드에 대한 생성자를 생성해준다. @ToString : toString 기능을 제공하며 exclude를 사용하여 제외할 필드를 선택할 ..