https://brilliant-star.tistory.com/129
지역 사회 마켓
웹 정보 시스템 아이디어 기획서 아이디어명 데이터 활용 농수산 플랫폼 서비스 아이디어 정의 농•수산물을 재배하는 생산자와 소비자를 직접 연결시킴으로 중간 유통 수수료를 최소화할 수
brilliant-star.tistory.com
해당 기획서를 바탕으로 만들었던
https://brilliant-star.tistory.com/130
지역 사회 마켓 결과 및 후기
지방 도시의 지역 상품을 판매하기 위한 SNS 스타일의 쇼핑몰 개발 기간: 23.03.31~2023.06.18 시스템 오픈 일정: 2023.06.20 전체 프로젝트 기간: 2023.03.16~2023.06.20 사용기술: python, django, sqlite3, docker, postgre
brilliant-star.tistory.com
해당 프로젝트를 재구성했습니다.
AWS 연결 문제로 배포는 하지 못했습니다.
소스 파일은 https://github.com/Ysungho/shop 해당 링크에 올렸습니다.
소스코드에 대한 설명도 주석으로 해당 코드에 첨부 했습니다.
GitHub - Ysungho/shop: 농산물 판매 사이트입니다. 배포는 하지 않았습니다.
농산물 판매 사이트입니다. 배포는 하지 않았습니다. . Contribute to Ysungho/shop development by creating an account on GitHub.
github.com
사용한 개발 환경
운영체제 : window 10
통합개발환경(IDE): 인텔리제이(IntelliJ)
JDK 버전: jdk11
스프링부트 버전: 2.7.14
데이터베이스: MySQL
빌드 툴: MAVEN
패키징: Jar
의존성: Spring Web
파일 구성
간단한 파일 구조 설명
- src/main/java 패키지 아래에는 자바 소스코드 작성
- src/main/resource 디렉토리 아래에는 HTML, CSS, JS, 이미지 파일 등의 정적 리소스를 저장
- thymeleaf는 기본적으로 뷰를 src/main/resource/templates에서 찾습니다. 해당 디렉토리 아래에 HTML 파일들을 작성하고, Controller Class에서 반환한 뷰와 동일한 이름의 html파일을 찾아서 웹 브라우저에 띄웁니다.
- src/test/java 패키지 아래에는 테스트 코드를 작성합니다.
파일별 간단 설명
application.properties
개발환경의 설정파일은 application-dev.properties로 만들고
운영환경의 설정파일은 application-prod.properties로 만듭니다.
실행되는 환경에 따라서 어떤 설정 파일을 사용할지를 jar파일 실행시 VM옵션 등을 통해 지정할 수 있습니다.
또한 application.properties에 설정해 둔 값을 자바 코드에 사용해야 한다면 @Value 어노테이션을 통해서 읽을 수 있습니다.
애플리케이션 설정 파일을 만드는 다른 방법으로는 application.yml 파일을 사용할 수 있습니다.
application.properties 파일과 비교했을 때 들여쓰기를 통한 설정 값들을 계층구조로 관리할 수 있기 때문에 가독성을 향상시킬 수 있다는 장점이 있습니다.
단점으로는 문법이 엄격합니다. 예를 들어서 콜론 다음에 값을 쓸 때 공백이 한 칸 있어야 해당 설정이 정상적으로 작동합니다.
띄어쓰기를 잘못했을 때는 예제가 정상적으로 동작하지 않을 수 있습니다.
#데이터베이스 초기화 전략 설정
spring.jap.hibernate.ddl-auto 옵션을 통해서 애플래케이션 구동 시 JPA의 데이터베이스 초기화 전략을 설정할 수 있습니다.
none: 사용하지 않음
create: 기본 테이블 삭제 후 테이블 생성
create-drop: 기존 테이블 삭제 후 테이블 생성, 종료 시점에 테이블 삭제
update: 변경된 스키마 적용
validate: 엔티티와 테이블 정상 매핑 확인
update 옵션에서 컬럼 삭제는 엄청난 문제를 발생할 수 있습니다.
스테이징, 운영환경에서는 절대로 create, create-drop, update를 사용하면 안됩니다.
스테이징과 운영 서버에서는 테이블 생성 및 컬럼 추가, 삭제, 변경은 데이터베이스에서 직접하며,
none을 사용하거나 validate를 이용하여 정상적인 매핑관계만 확인합니다.
*스테이징과 운영환경의 차이
스테이징 환경은 운영환경과 거의 동일한 환경으로 구성하여, 운영환경에 배포하기 전 여러가지 기능(성능, 장애 등)을 검증하는 환경입니다.
운영환경은 실제 서비스를 운영하는 환경입니다.
test - 테스트 코드의 중요성
개발을 하다 보면 기획 요건이 변경돼 코드를 수정하거나, 기존의 소스 코드를 수정해야 하는 상황이 발생합니다.
로직이 복잡하지 않다면 기존 소스를 금방 해석해서 코드를 추가할 것입니다.
하지만 로직이 복잡할 때 코드 수정 이후 코드가 버그 없이 제대로 동작하는지 테스트 하는 것은 매우 중요합니다.
테스트 코드도 유지 보수를 해야 하기 때문에 비용이 발생합니다.
따라서 의미 있는 테스트 케이스를 작성하고 결과가 예상과 맞는지 검사하는 로직을 작성해야 합니다.
가능한 테스트 케이스가 여러 개라면 애플리케이션을 실행하고 테스트하는 것도 시간이 많이 소요되며 테스트 케이스를 놓칠 수 있습니다.
하지만 잘 만들어진 테스트케이스는 유지 보수 및 소스코드의 안전성을 위해서 중요합니다.
Thymeleaf - 클라이언트 제작에 사용
화면을 동적으로 만들려면 템플릿 엔진을 사용해야 합니다.
미리 정의된 템플릿(Template)을 만들고 동적으로 HTML 페이지를 만들어서 클라이언트에 전달하는 방식입니다.
요청이 들어올 때마다 서버에서 새로운 HTML 페이지를 만들어 주기 때문에 서버 사이드 렌더링 방식이라고 부릅니다.
대표적으로 Thymeleaf, JSP, Freemarker, Groovy, Mustache가 있습니다.
Thymeleaf를 사용하면 thymeleaf 문법을 포함하고 있는 html 파일을 서버 사이드 렌더링을 하지 않고 브라우저에 띄워도 정상적인 화면을 볼 수 있습니다.
Thymeleaf의 확장자명은 .html이며 Thymeleaf의 문법은 html 태그 안쪽에 속성으로 사용됩니다.
장점
디자이너 또는 퍼블리셔는 자신이 작업한 내용을 html 파일로 열어서 바로 확인 할 수 있으며,
개발자는 디자이너 또는 퍼블리셔로부터 html 파일을 받아서 html 태그 안에 Thymeleaf 문법을 추가하는 것만으로 동적으로 html 파일을 생성할 수 있습니다.
프로젝트 사진
로그인 화면
로그인 실패 시
회원 가입 화면
관리자 모드로 로그인 했을 때 할 수 있는 기능
로그인 했을 때 화면(상품등록, 상품관리, 장바구니, 구매이력, 로그아웃)
상품 등록
상품 관리
일반 회원으로 로그인 했을 때 할 수 있는 기능
로그인했을 때 화면(장바구니, 구매이력, 로그아웃)
상품을 장바구니에 담기
상품을 주문 했을 때
상품을 주문 취소 시
상품 주문 취소 완료
상품을 로그인 안하고 장바구니에 담을 때
상품 검색
상품 품절 시
구매 이력 확인
시연 동영산상
관리자로 로그인 했을 때
일반 사용자로 로그인 했을 때
'개발후기 > Spring Boot' 카테고리의 다른 글
[Java Spring Boot]가장 기본적인 형태의 블로그 (0) | 2023.08.29 |
---|