스프링 부트 멀티모듈을 환경에서 발생했던 Boot Jar 설정 오류를 다뤄보고자 한다. root 디렉터리의 주석 부분을 추가하여 문제를 해결할 수 있었다. 오류 발생 시점의 build.gradle 파일은 아래와 같다. subprojects { apply plugin: 'java' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' } tasks.named('test..
문제JAVA 17, Spring Boot 3.2 멀티 모듈 구조에서 각 모듈간의 의존성을 제대로 선언해놓고 실행했음에도 모듈에서 다른 모듈의 소스 정보를 못 읽어오는 이슈가 발생했다. 해당 문제를 해결하기 위해 애플리케이션 실행 지점에 다른 모듈의 객체를 생성하는 간단한 코드를 넣어 확인해보았다. 소스코드와 IDE 상에는 분명히 domain 모듈의 Product 클래스가 import 되어 있는데, 컴파일러가 Product 클래스를 import 하는 시점에 오류가 발생한다.해당 프로젝트는 내가 예전에 작성하고 테스트까지 끝마쳤던 소스코드를 그대로 가져와서 동일한 환경으로 재구성 한 것이라 완벽하게 동일한 소스코드와 의존성을 가지고 있다. 이전의 프로젝트는 오류없이 정상적으로 실행되니 참 답답한 상황이 아닐..
지금은 미니프로젝트를 진행중이기 때문에 프론트서버를 따로 두지 않아서, 백엔드 서버에서 함께 동작시켜야 하는 상황이다. 문제: 크롬과 Postman의 JWT 인증결과가 다름 먼저 로그인을 하면 응답헤더에 JWT를 포함하여 바디와 함께 응답한다. 응답을 받은 클라이언트는 헤더에 JWT를 포함하여 /user로 GET 요청한다. /user 는 토큰의 인증이 있어야 접근할 수 있는 url이다. 브라우저에서 토큰 인증할 때, 로그인 이후 요청 헤더에 JWT 잘 넣어서 들어오고, 인증도 잘 마쳐진 상태이다. 토큰 제대로 들어오고, 인증 처리 완료돼서 Security Context Holder에 UserDetail 정보도 잘 저장된다. 근데 막상 크롬에서 페이지 이동이 잘 되었나 보면 인증이 안됨 ????? post..
심지어 이슈번호 태깅도 잘못 된 것을 깨달았다.... 역시 잠을 안자니 실수를 많이 하게 되는 것 같다 #6번 이슈를 태깅했어야 했는데 다른 이슈를 태깅하여 브랜치를 만들어버렸다. 이미 작업한 브랜치에서 새로운 브랜치를 생성하고 푸쉬하려고 한다. git checkout -b feature/#6-StadiumAndTeam-service-enhancement 푸쉬하고 보니 커밋까지 이슈를 죄다 잘못 붙였다는 것을 깨달았다,,, 한탄스럽다 나자신,, 하나 하나 커밋 로그를 수정해주고 포스 푸쉬를 진행하여 해결하였다. git push -f origin feature/#6-StadiumAndTeam-service-enhancement
깃으로 협업하는 첫 프로젝트를 진행하였다. GitHub - hyunsb/baseball-management-application: Java + MySQL + JDBC + gradle + JUint5 Java + MySQL + JDBC + gradle + JUint5. Contribute to hyunsb/baseball-management-application development by creating an account on GitHub. github.com 협업 전략은 아래와 같다. 개발, 수정, 보완, 오류 해결하고자 하는 내용을 이슈로 등록한다. develop 브랜치를 베이스로 하여 featuer 디렉터리에 이슈번호를 태깅하여 개발 브랜치를 생성한다. 개발종료 후 develop 브랜치로 PR 및 ..
댓글 기능 생성 중 무한참조에 대해 고민하게 되었습니다. DB구조상 Board를 Select하면 Reply도 함께 Eager전략으로 불러오는데, Reply에서 다시 Board를 불러오는 구조로 형성되어 있었습니다. public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Column(nullable = false, length = 100) private String title; @Lob private String content; private int count; @ManyToOne(fetch = FetchType.EAGER) // board (N) : user (1) @JoinColumn(nam..
블로그 프로젝트의 카카오 로그인 기능은 사용자가 처음 카카오 로그인을 진행하면 자동으로 회원가입이 진행됩니다. 이때 개발자가 정해놓은 정적인 유니크 키에 의해 비밀번호가 저장되는데, 이런 로직은 서비스 상 문제가 발생할 수 있습니다. 유니크 키 유출 문제 유니크 키가 유출될 경우, 카카오 로그인을 사용하는 모든 사용자의 계정이 위험해집니다. 유니크 키가 유출된다면, 해당 키를 알고 있는 사용자는 모든 카카오 로그인 사용자의 계정에 로그인할 수 있습니다. 비밀번호 변경 문제 카카오 로그인 사용자가 비밀번호를 수정한 이후에 다시 로그인하면, 블로그 프로젝트 로직상으로는 정상적인 스프링 시큐리티 로그인이 불가능합니다. 이 문제를 해결하려면, 카카오 로그인(OAuth를 이용한 로그인) 사용자가 비밀번호를 변경할..
카카오 로그인 시 DB에 정보가 없으면 회원가입 진행 후 로그인을 진행하는 서비스를 생성하였다. 하지만 회원가입 진행 후 DB에는 정상적으로 데이터가 입력되나 로그인이 정상적으로 작동하지 않는 상황이 발생하였다. String kakaoUsername = kakaoProfile.getKakao_account().getEmail() + "_" + kakaoProfile.getId(); String kakaoEmail = kakaoProfile.getKakao_account().getEmail(); String kakaoPassword = cosKey; User kakaoUser = User.builder() .username(kakaoUsername) .password(kakaoPassword) .email..
스프링시큐리티 환경에서 회원 정보 수정 기능을 구현하던 중 회원 정보 수정을 완료하고 DB에 최신 데이터가 반영되었음에도 회원 정보페이지에 다시 접속하면 수정하기 전의 정보가 출력되는 현상이 발생하였습니다. 변경할 회원 정보를 입력하고 회원정보 수정 버튼을 클릭 시 정상 알림창이 출력되고 DB에도 정상적으로 수정된 정보가 반영된 것을 확인할 수 있습니다. 하지만,, 변경 후 다시 회원 정보를 요청하면 수정하기 전의 정보가 출력되는데 첫 번째 해결 방법 ❌ 이는 현재의 코드가 아래 예시 처럼 스프링 시큐리티 세션의 정보를 #authentication.principal로 가져와 사용자에게 출력하는 구조이기 때문에 일어나는 현상이었습니다. UserName: Password: Email: DB의 데이터가 정상적..