반응형
제육's 휘발성 코딩
반응형
[Spring] 스프링 핵심 원리 이해 (OCP, DIP, 관심사 분리)
🔷 Spring/basic 2022. 4. 13. 21:54

스프링 핵심 원리 이해 - 예제 프로젝트 생성 https://start.spring.io/ 에서 별도의 Dependency 없이 프로젝트를 생성하자. 비즈니스 요구사항 회원 회원 가입 및 조회 회원 등급 (일반, VIP) 자체 DB를 사용하며, 외부 DB 연동 가능성 존재 주문과 할인 정책 회원은 상품 주문 가능 회원 등급에 따라 할인 정책 적용 모든 VIP는 1000원 할인해주는 고정 할인 금액 적용 (할인 내용 변경 가능성 존재) 요구사항을 보면 회원 데이터, 할인 정책 등 당장 결정하기 어려운 부분이 있다. 앞에서 배운 객체지향 설계 방법을 통해 인터페이스만 만들고 구현체를 갈아끼울 수 있도록 설계해보자. 우선 스프링의 기능을 사용하지 않고 이후에 변경해보자. 도메인 설계 회원 도메인 협력 관계는 ..

[Spring] 스프링 부트 예제 - 회원 관리
🔷 Spring/basic 2022. 4. 13. 12:57

회원 관리 예제 웹 애플리케이션 계층 구조를 보고 백엔드 관점에서 회원 관리 예제를 적용해보자. 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 구현 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 : 비즈니스 도메인 객체 (회원, 주문, 쿠폰 등 데이터베이스에서 저장하고 관리되는 모델) 비즈니스 요구사항 정리 데이터 : 회원 ID, 이름 기능 : 회원 등록, 조회 데이터 저장소가 아직 선정되지 않음 클래스 의존 관계는 데이터베이스가 선정되지 않았다는 가정이므로, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계하자. 개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 회원 도메인과 리포지토리 만들기 pu..

[Spring] 스프링 부트 동작과정 (스프링 컨테이너)
🔷 Spring/basic 2022. 4. 12. 12:18

스프링 웹 개발 기초 프로젝트 생성 https://start.spring.io/ 에서 프로젝트를 GENERATE하고 IDE에서 임포트하자. 라이브러리 Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다. 스프링 부트 라이브러리 spring-boot-starter-web spring-boot-starter-tomcat spring-webmvc springboot-starter-thymeleaf spring-boot-starter(공통) : 스프링 부트 , 스프링 코어, 로깅 기능 웹 개발에는 크게 정적 컨텐츠, MVC와 템플릿 엔진, API 세 가지로 나눌 수 있다. 스프링 부트는 static/index.html 을 올려두면 Welcome page 기능을 제공한다. 정적 컨텐츠 HTML 파일을 ..

[MVC-2] 스프링 로그인 - 필터, 인터셉터
🔷 Spring/MVC 2022. 4. 11. 23:38

로그인 처리 - 필터, 인터셉터 서블릿 필터 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다는 요구사항을 살펴보자. 로그인하지 않은 사용자도 URL을 알고 있다면 직접 호출하여 관리 화면에 들어올 수 있다. 이 부분을 해결하려면 등록, 수정, 삭제, 조회 등등 상품관리의 모든 컨트롤러 로직에 공통으로 로그인 여부를 확인해야 한다. 이렇게 애플리케이션 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사라고 한다. 스프링의 AOP로도 해결할 수 있지만, 웹과 관련된 공통 관심사는 HTTP의 헤더나 URL의 정보가 필요한데, 이 부분을 HttpServletRequest를 제공하는 서블릿 필터나 스프링 인터셉터를 사용하는 것이 바람직하다. 서블릿 필터 흐름 HTTP 요청 - WAS - 필터 - 서블릿 - ..

[MVC-2] 스프링 로그인 처리 - 세션 , 쿠키
🔷 Spring/MVC 2022. 4. 11. 18:09

로그인 처리 - 쿠키, 세션 로그인 요구 사항 홈 화면 - 로그인 전 회원 가입 로그인 홈 화면 - 로그인 후 사용자 이름 상품 관리 로그아웃 보안 요구사항 로그인 사용자만 상품에 접근하고, 관리 로그인 하지 않은 사용자가 상품 관리에 접근하면 로그인 화면 이동 회원 가입, 상품 관리 패키지 구조 설계 domain item member login web item member login 도메인이 가장 중요하다. 도메인은 화면, UI, 기술 인프라 등등의 영역을 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 의미한다. 향후 web을 다른 기술로 바꾸어도 도메인은 그대로 유지할 수 있어야 한다. 즉, web은 domain을 의존하지만, domain은 web을 의존하지 않도록 설계하는 것이 중요하다...

[MVC-2] 스프링 검증 - Bean Validation
🔷 Spring/MVC 2022. 4. 11. 12:19

Bean Validation 검증 기능을 매번 코드로 작성하는 것은 상당히 번거롭다. 특히 특정 필드에 대한 검증 로직은 대부분 빈 값인지 아닌지, 특정 크기를 넘는지 아닌지와 같이 매우 일반적인 로직이다. 이러한 불편함을 애노테이션 하나로 검증 로직을 적용한 것이 Bean Validation이다. implementation 'org.springframework.boot:spring-boot-starter-validation' build.gradle에 라이브러리를 추가하자. 해당 라이브러리를 등록하면 스프링 부트는 자동으로 글로벌 Validator로 등록한다. 단, 사용할 때 해당 메서드 파라미터에 @Validated 또는 @Valid 를 넣어줘야 한다. 검증 오류가 발생하면 FieldError, Obj..

[MVC-2] 스프링 유효성 검증 - Validation, @Valid 사용법
🔷 Spring/MVC 2022. 4. 10. 21:24

검증 - Validation 컨트롤러의 중요한 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 웹 서비스는 폼 입력시 오류가 발생하면, 고객이 입력한 데이터를 유지한 상태로 어떤 오류가 발생했는지 알려주어야 한다. 정상 로직보다 이런 검증 로직을 잘 개발하는 것이 어쩌면 더 어려울 수도 있다. 검증 요구사항 상품 관리 시스템에 새로운 요구사항이 추가되었다. 요구사항 : 검증 로직 추가 타입 검증 가격, 수량에 문자가 들어가면 검증 오류 처리 필드 검증 상품명 : 필수, 공백X 가격 : 1000원 이상, 1백만원 이하 수량 : 최대 9999 특정 필드의 범위를 넘어서는 검증 가격 * 수량의 합은 10,000원 이상 검증 방식 1 (스프링 제공 X) 고객이 상품 등록 폼에서 요구사항에 맞지 않는 ..

[MVC-2] 스프링 메시지, 국제화 사용방법
🔷 Spring/MVC 2022. 4. 10. 00:52

메시지, 국제화 메시지 : 여러 화면에서 동일한 명칭으로 하드 코딩되어 있는 것을 한 곳에서 관리하는 기능을 의미한다. 예를 들어 messages.properties라는 메시지 관리용 파일을 만들고 각 HTML은 해당 데이터를 key 값으로 불러서 사용하는 것이다. 다음 예시를 살펴 보자. item = 상품 item.id = 상품 ID item.itemName = 상품명 item.price = 가격 item.quantity = 수량 messages.properties라는 메시지 관리용 파일 해당 label을 각 HTML에서 렌더링하여 사용한다. 국제화 : 메시지에서 설정한 파일을 각 나라별로 관리하여 서비스를 제공하는 것을 국제화라고 한다. 예를 들어 message_en.properties와 messag..

반응형
반응형