1)
이니셜라이저 다운
인텔리제이에서 열고 롬복 설치 확인
application.properties 에 application name 및 port 설정
test hello controller 작성 후 application 돌려서 체크
(@RestController로 한다)
롬복 확인
롬복 @G / @S / @ToString
userDto에 age name 넣고 jason으로 반환되는지 확인
실행하면 Target resources에 userDto가 생긴다
-
2) SQL 설치 및 연동
SQL 만드는데 3시간 소비
서버 상태는 안되어도 테이블은 만들어지니까 빠르게 진행하자
-
3) 리포지토리 일반 테스트 성공했으나 깃헙 반영 오류가 있어 생성된 resources 삭제하다가 오류
-> 완전히 갈아엎고 다시
invalidate caches 후 SQL 커넥션 오류
워크벤치로 들어가보니 서버가 켜져있지 않음
프로퍼티에서 mySQL 삭제 후 정상 작동
-> mySQL 새로 설치 필요
-
3) 리포지토리 일반 테스트
-
4) QueryDsl 테스트
2디펜던시 + 1플러그인
compile해서 Qitem을 소스에 넣어주는 것 잊지말기
5) 타임리프
****************
포트 오류때문에 프로퍼티에서 바꿔도 unused 적용
또 2년전 생활코딩 서버가 아직 작동하고 있었다 ㅜㅠㅜ
8080 접속 후 타임리프 컨트롤러 작동 안함
경로는 잘 접속했는지, 컨트롤러 자체의 문제인지 등 파악하려면 기존 테스트 컨트롤러를 남겨두고 대조 비교하는 게 좋다
ㄱ\
컨트롤러는 잘 되고 뷰에서 쏴주는게 문젱닌듯
리소스에 templates을 만들고 뷰를 만들어줘야한다
기타 기능 정상 작동 확인
-
6) 타임리프 레이아웃 (24분)
레이아웃 디펜던시
layout 어셈블러
fragment -> 헤더
fragment -> 푸터
원본 컨텐츠
레이아웃이 적용 안되는 문제 -> 디펜던시에서 버전을 뺸다
* old 버전은 decorater 주의 / 현재는 decorate
7) CSS + 부트스트랩
css 적용
인텔리제이에서 css는 인식 못한다고 경고떠도 무시하고 들어가면 된다
css 내부에 footer, header 정렬 정보가 있고 메인 콘텐츠는 프래그먼트 아닌 class -> css파일 내 속성명 가져오기
-
8) 시큐리티 디펜던시 등록 + 멤버 기능 추가 (20분)
디펜던시 추가 후 실행 -> 콘솔에 패스워드 발급 -> 뷰에서는 자동 리디렉션 확인
enUM 뒤에는 ; 붙이지 않는다
MemberFormDto에서 validation 디펜던시만 등록하면 검증용 @ 바로 사용가능 -> 헷갈리지 말기
UerdetailService 관련은 당연하게도 전부 시큐리티 임포트
서비스까지만들고 savaMember 테스트 / 중복 validate 테스트 완
작동완
-
9) 로그인 로그아웃(20분)
*보통 진행하는 것
프레임워크 프로젝트 개설 후
디펜던시, 플러그인 적용 확인, QITEM 경로추가, 프로퍼티-SQL / H2접속 확인
실행해서 controller 테스트(body로 하거나 view로 하거나)
그 다음 Url경로 - 뷰페이지 - 컨트롤러 연결
뷰-DTO 형식 validation
저장 validation
조회 validation(entityNotFOundExcetpion)
뺏다 붙였다 하려면 위에 프리태그 추가해줘야함
-
10) ADMIN / USER 에 따라 권한확인(10)
setRole : ADMIN <-> USER
item Create 접근 테스트 권한 확인
-
11) Auditing 기능
확인완
-
12)카트 - 멤버 left Outerjoin
fetch type EAGER로 바로 조인됨
-
13) 카트아이템 -> 카트 / 아이템
-
14) // 오더아이템 -> 아이템 / 오더
*Cascade 테스트 할때 orderItemrepository가 없어도 저장된다
-
15) 고아 객체 제거
오더 내부에 오더아이템만 삭제했으나 오더아이템 자동으로 delete됨
-
16) EAGER <-> LAZY
*FileterChain 확인
-
OneToOne ManyToOne Eager로(default) 두었을때
LAZY로 수정 ㄹ후
처음은 오더아이템만 불러오고, Order는 proxy로 들어간다
order를 사용할때 되서 order테이블 불러옴
-
17) 아이템 등록
생성자 빼먹지말기
실패하면 트랜잭션 롤백 참고
*mysql 문제시
1) 서버 리셋
2) 삭제 후 다시 깔아도 되고
3) **그 전에 configure 설정만 다시 해줘도 됨
프로퍼티가 적용되든 안되든 실행시에 문제가 생긴다
[PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [item_img]
ddl-validate에서 create로 적용하니 해결(임시)
https://soongjamm.tistory.com/163
참고할 것
-
*시작하는 상태는 shop3Application이 아니라 ItemServiceTest로 시작
설정해둔 경로 노출은 pilepath 아님에 주의 (started by user in C :/Users/user/Desktop/shop3)
포트 PID로 노출
active profile 별도로 없음
테스트완
상품 등록시 해당 경로에 더미데이터 세이브됨
-
18) 아이템 수정
아이템 수정 | |||
컨트롤러 : | @G(기존 DTO에 담기) / @P | ||
서비스 | 기존 불러오기 / U_Item | ||
ItemImgService | 업데이트아이템이미지 | ||
아이템 | 업데이트아이템 | ||
새 코드 추가후 들어가보니(계정 reset도되어) 401 unauthorized 확인
새로 등록 후 pathvariable 사용하여 들어가보니 기존 정보 남아서 로드하는 것 확인
post(update)까지 확인
-
19) 아이템 조회 : searchDto / queryDsl 사용하여 page 형식으로
deprecated 참고하여 테스트할것
list와 count 분리완
이후 실행은 되나 아이템 생성 후 관리페이지 들어가지지 않음
타임리프에서도 경로를 참조한다
정상 작동되지만 등록일 비어있음
auditing기능 확인
-
20) auditing 수정
config에 deprecated 되어있는것 모르고 진행
2.7.1에서는 configure 대신 filterChain 사용
itemEntity에 개별로 등록되었던 time 삭제, baseEntity 상속시킴
등록일 정상작동
-
21) 메인페이지 조회
엔티티(DTO) 로부터 먼저 작업해야 한다, QDomin을 만들기 위해
도메인 만드는 과정도 역시 컴파일이므로, 미리 QDomain을 사용한 메서드가 서비스 / 컨트롤러 등에 있다면 컴파일 오류발생
기능 정상 작동하나 등록된 이미지는 보여지지 않음
상세페이지에도 img 들어가니까 해당 기능까지 구현해보고 대조하가며 처리
-
22) 상세페이지 처리
두 view 모두 동일한 imgUrl을 참조하고 있다
여기서 시작
3개 모두 나오는 거 봐선 itemimg 정보는 있다 / null은 아니니까
정보는 있는데 리소스에 접근할 수 없나?
저장은 uploadpath+로 함
경로를 저렇게 불러오고 있음.
ItemImgService에서 imgUrl 경로
-> 나중에 작업할 것
-
23) 오더
테스트 및 view에서 script ajax로 주문완
-
24) 오더히스토리 조회
조회 기능 테스트 완료,
다시 구매 이력 조회하면서 order.getOrderItems() 처음 실행시 in 쿼리문 발생 ->
JPA 사용시에는 N+1 성능이슈 조심
-
25) 주문 취소
-
26) 카트 담기
서비스테스트 - 뷰 확인
-
27) 카트 상세 조회 - 수량 수정 - 삭제
JPQL로 DTO 바로 만들어서 반환할 때에는 경로 주의
정상 실행됨
수량변경 / 삭제 script코드 정상 동작
-
28) 카트 주문
오더서비스 이용하는 점 주의
업데이트로 변경해야함...
'포트폴리오 > SpringBoot MVC' 카테고리의 다른 글
컨트롤러 - 익셉션시 에러메세지를 넣어주는 메서드와 아닌것 (0) | 2024.03.29 |
---|---|
컨트롤러- 페이지 사용하는 3개 메서드 비교 (1) | 2024.03.29 |
기능(메서드) 기반 해석 (1) | 2024.03.28 |
cartController (0) | 2024.03.26 |
컨트롤러 - 뷰 (2) | 2024.03.26 |