반응형

JAVA/소박한그룹 프로젝트 15

[211023] 회원가입 승인/대기/거절 기능 추가하기 (Thymeleaf, Spring Boot) (1)

이번 시간에는 프로젝트 이슈 #17에 해당되는 회원가입 승인 관련 내용을 포스팅하려한다. 참고로 아직 현재진행형 중인 이슈이므로, 참고만 해주길 바란다. 현재는 스프링시큐리티 권한 관련 약간의 버그가 존재하여 이후에 수정해주어야 한다. github #21, #22 수정완료. 수정완료된 버전으로 포스팅하였음. https://github.com/kth990303/BOJStudyList/issues/17 회원가입 시, 승인/대기/완료 창을 만들어주세요. · Issue #17 · kth990303/BOJStudyList 현재는 회원가입을 진행할 경우, 별다른 확인조치 없이 가입이 완료됩니다. 이는 그룹 인원파악 및 보안에 치명적일 수 있습니다. 10월 중순~말까지 이 기능을 완료해주세요. 회원가입을 진행할 gi..

[ERROR] SQL Error: 1451, SQLState: 23000 Cannot delete or update a parent row: a foreign key constraint fails

정말 오랜만에 소박한그룹 java 프로젝트를 진행한다. 댓글 기능을 오늘 이어서 하려다가, 지난번에 회원이 작성한 게시글 목록 기능 구현을 우선적으로 하고 있었다는 사실을 깨닫고 회원작성 게시글 목록 view단을 만드는 작업을 진행했다. 그러던 와중, 아래 uri 주소에서 에러가 발생했다. http://localhost:8090/delete/1 test code에서 롤백되지 않고 남은 test, test2, test3을 회원탈퇴 시키려할 때 아래 에러가 발생했다. test code를 잘 작성해도 아직 이런 에러를 겪는 걸 보니 한참 멀었다. 연관관계가 많아질수록 버그도 많아지는... 에러는 위와 같이 떴는데, 아마 post-member table이 원래 단방향이었는데, 양방향으로 바꾸면서 에러가 발생한 ..

[211009] 회원이 작성한 게시글 목록을 JPA 1:N 양방향 매핑으로 구현해보자

사실 이 작업은 댓글 기능까지 어느정도 구현한 후에 진행해보려 했는데, 댓글-게시글, 댓글-회원 테이블에 양방향 연관관계 매핑이 필요할 것 같아 연습 겸 이 작업 먼저 해보았다. https://github.com/kth990303/BOJStudyList/issues/20 회원이 작성한 게시글 수를 볼 수 있게 해주세요 · Issue #20 · kth990303/BOJStudyList 양방향 매핑으로 수정하면 될 듯? 그 전에 연관관계도 다시 공부하면 좋을 것 같습니다. github.com 그동안 단방향 매핑 코드만 짜다가, 오랜만에 양방향을 적용하려 하니까 가물가물해서 헤맸다. 오늘 한 작업은 아래와 같다. Member - Post 양방향으로 수정 회원이 작성한 게시글 목록 메소드 생성 Test Code..

[211007] 템플릿엔진(thymeleaf)으로 비동기 처리 방식에 대해 고민중이다.

그동안 나는 '소박하지만 그룹입니다' 백준 그룹 멤버들의 공간을 만들기 위한 작인 개인프로젝트를 진행중이었다. 회원, 로그인, 게시글 기능까지 구현을 완료하고 이제 댓글 기능을 구현하려던 중, 문제점이 하나 발생했다. 바로 댓글 기능이다. https://github.com/kth990303/BOJStudyList/issues/18 댓글 기능을 만들어주세요. · Issue #18 · kth990303/BOJStudyList 드디어 댓글 기능을 추가할 차례입니다. Post : Comments 1:N 연관관계로 진행하면 될 것 같습니다. 기한은 11월 초까지이며, 요구사항은 아래와 같습니다. 게시글에 댓글을 작성할 경우, 댓글내용이 github.com 비동기가 필요하다고 느낀 이유? 우리가 흔히 생각하고 있는..

[211004] @Validated로 Http 요청 파라미터 검증 작업을 거쳐주자

오늘 검증 작업을 열심히 공부하여 아래 사진처럼 결과가 뜨게 작업해주는 하루를 보냈다. 예전에는 비밀번호를 아예 입력하지 않아도, 또는 아이디를 아예 입력하지 않아도 회원가입 버튼을 누르면 회원가입이 완료됐었다. 하지만 오늘 작업한 덕분에, 이제 위와 같이 입력폼에서 제대로 입력하지 않았을 경우, 이용자들에게 알림을 띄워주게 할 수 있었다. 또한, 아래 작업도 해주었다. https://github.com/kth990303/BOJStudyList/issues/11 게시글 내용이 지나치게 길 경우, 에러가 발생합니다. · Issue #11 · kth990303/BOJStudyList 백준 코드를 복붙하거나, 노래 가사 전문을 입력할 경우 에러가 발생합니다. Data truncation: Data too lo..

[210930] 임베디드 타입과 LocalDateTime, MapStruct를 이용한 게시글 작성일자, 수정일자 작업

게시글 작성일자, 수정일자 기능을 넣고 싶어서 JPA 시간에 배운 @Embedded, @Embeddable 기능을 사용하여 Period 변수를 추가하여 보았다. 임베디드 관련 내용은 아래 포스팅에서 볼 수 있다. https://kth990303.tistory.com/65 [JPA] 값 타입 컬렉션, 임베디드 타입 만약 객체가 다른 객체의 테이블을 참조할 필요는 없는데, 해당 객체가 여러 가지 값을 가지고 있어야 하는 경우는 어떻게 할까? 예를 들자면, kth990303 학생과 aru0504 학생이 있다고 하자. kth990303 kth990303.tistory.com 개발환경 Java 11 MapStruct 1.4.2 JPA + MySQL 8.0.19 Spring Boot lombok 디렉토리 구조 Po..

[Thymeleaf] ERROR _ TemplateProcessingException: which is not valid: only variable expressions (${...}) are allowed in '{the:object,data-to-object}'

오랜만에 스프링으로 소박한그룹 프로젝트 작업 중에 회원정보 수정 창에서 아래 화면이 발생했다. org.thymeleaf.exceptions.TemplateProcessingException: The expression used for object selection is member, which is not valid: only variable expressions (${...}) are allowed in '{th:object,data-th-object}' attributes in Spring enabled environments. (template: "editMember" - line 12, col 37) 개발환경 Java 11 JPA Spring Boot Thymeleaf 에러 이유 @Validate..

[Spring][TDD] MockMvc를 이용한 Controller Test

우리가 API를 개발하거나, 컨트롤러에서 view로 model을 넘겨줄 때, 또는 spring security로 로그인하여 권한이 있을 때만 service logic을 테스트할 수밖에 없는 경우가 분명히 존재한다. 이럴 땐, 직접 실행하여 테스트해보는 수밖에 없을까? 그렇지 않다. 임의의 가짜 객체 Mock을 만들어서 가상으로 테스트해보면 된다! 이 때 사용되는 방법엔 @WebMvcTest, @AutoConfigureMockMvc가 있는데, 둘의 기능은 거의 비슷하나, @AutoConfigureMockMvc가 전자와는 다르게 @Service, @Repository가 붙은 객체들도 모두 메모리에 올린다는 차이점이 존재한다. 또한, @WebMvcTest는 @SpringBootTest의 MockMvc와 충돌할..

[Spring] MapStruct 수동으로 오버라이딩 코드 구현하기

Entity dto 반환 mapper를 알아보던 중, ModelMapper보다 MapStruct가 성능이슈가 적고, 편리하다는 말을 들어 mapstruct를 애용중이다. 간단한 mapstruct 이용법은 아래 포스팅에서 볼 수 있다. https://kth990303.tistory.com/131 [Spring] MapStruct를 이용한 Entity, Dto 반환 및 고찰 그 동안 View layer에서 Entity에 직접적으로 접근하도록 코드를 짰던 나에게, 이번 DTO 적용은 상당히 고된 일이었다. 사실 dto는 단순한 entity의 클론 느낌이라 적용이 크게 어렵지 않을 줄 알았는데, kth990303.tistory.com 그런데, 문제가 생겼다. 도메인이 두 개 이상이며, 도메인끼리 연관관계를 이룰..

[Thymeleaf] 타임리프 Thymeleaf th:style, th:if 사용하기

리액트가 익숙해지기 전까진, 타임리프를 이용하여 프론트를 대강 구현하는 중이다. 이번 시간엔 th:style, th:if를 이용한 템플릿 엔진 타임리프 사용법을 기록하겠다. th:style 제목 내용 게시판을 등록하는 코드이다. th:style 을 이용할 때 ${} 안에 작은따옴표가 들어간다는 것과, 여러 가지일 경우 ;를 사이에 붙여주는 것을 잊지 말자. width, height가 잘 적용됨을 확인할 수 있다. th:if 제목 작성자: 작성자 삭제 내용 댓글 기능은 준비중입니다. sec는 스프링 시큐리티의 로그인 권한 부여여부 확인을 위해 사용된다. th:if="" 안에 조건문을 넣어주면 된다. 참고로 이때, th:if는 안에 있어야 하며, th:href는 태그 안에 있어야 한다. 약속인 듯하다. 지켜..

반응형