f 'Spring Boot' 카테고리의 글 목록 — 하늘속에서IT

Spring Boot

    [Spring Boot] Access denied for user 'root'@'localhost'(using password: yes)

    발단테스트를 위해 생성한 프로젝트에서 DB 연결이 정상적으로 이루어지지 않았다. Client(HeidSQL, DataGrip)으로는 연결이 되었지만 Spring 에서 연결이 되지 않았기에  환경Spring Boot 3.2.5Mysql 8.0.36 설명다른 블로그를 찾아보니 `Access denied for user ...` 오류에 대한 해결방법은 3가지로 나뉜다. 하지만 본인은 아래 3가지 방법중 어떤 걸로도 해결되지 않았다. 1. Bitnami WAMP 로 인해 Listening 중인 서버가 동시에 떠있는 경우가 있는 듯 하다.   - 보통 강의에서 사용되는 오픈소스 솔루션으로 PHP, Mysql 등의 프로그램을 쉽게 설치하는 방법인듯 하다. 2. 비밀번호 오류   - M..

    [JPA] 연관관계를 맺은 객체에 대해 지연 로딩이 동작하지 않는다면(feat. kotlin, hibernate, lazy-loading)

    발단 스케줄러 작업을 통해 주기적으로 DB 요청을 하는 상황에서 로그를 살펴보니 원하지 않았던 정보까지 요청하고 있어 어떻게 해결하게 되었는지 공유하고자 합니다. 환경 Spring Boot > 3.0 Kotlin Kotlin 의 final 정책 이해를 돕기 위해 간단히 Kotlin 의 정책에 대해 얘기해보고자 합니다. Effective Java, "Item 17: Design and document for inheritance or else prohibit it" `Effective Java` 2001 연도에 출판한 책으로 Java 의 효율적인 사용과 좋지만 흔히 사용되지 않은 개발패턴에 대해 언급한 저명한 서적입니다. 해당 책에서 `상속을 위해 디자인과 문서화 하지 않을거면 지양해라` 라는 챕터를 다룬..

    [Gradle] Spring Boot + Gradle 환경에서 bootBuildImage 의 createdDate(생성 일자)의 표기가 1980년도로 되어있다면?(feat. kotlin, intellij)

    발단 intellij 환경에서 gradle 플러그인을 통해 bootBuildImage 로 docker 의 image 를 관리할 때 생성일자가 과거로 설정되어있는 것을 확인하였다. 환경 Spring Boot 3.1.3(kotlin) build.gradle.kts 해결 tasks.withType{ ... createdDate = "now" // 또는 ISO 8601 규격에 맞는 값을 입력 } 참고 stack overflow 를 통한 원인 Spring Boot 2.3.0 buildpack builds image with creation date 40 years ago I've tried to use buildpack in a maven project with Spring Boot 2.3.0 running: m..

    [Spring Boot] @ModelAttribute 로 맵핑하려는 대상의 depth 가 2 이상일 때 요청하였는데 오류가 난다면?(feat. kotlin)

    발단 최근 작업중인 프로젝트에서 등록 기능에 파일이 포함되어야 할 수 있기 때문에 @RequestBody 가 아닌 @ModelAttribute 로 mutlipart/form-data 타입의 요청을 다루어야 하였다. 이 때, dto 가 2-depth 가 되며 생긴 문제이다. 예시 코드 @RestController @RequestMapping("") class TestController { @PostMapping("") fun hiPost( @ModelAttribute body: TestDto, ){ ... } } data class TestDto( var name: String = "", var testInnerDto: TestInnerDto ) data class TestInnerDto( var age:..

    [Spring Boot] Spring 에서 Redis 를 사용할 때 ConnectionFactory 를 왜 Bean 으로 등록해서 사용해야 할까?(feat. Kotlin, Lettuce, LettuceConnectionFactory was not initialized through afterPropertiesSet())

    발단 RedisTemplate 의 connectionFactory 를 Bean 으로 등록된 RedisConnectionFactory 로 사용하는 예제가 많은데 왜 그래야 하는지 설명이 없어 궁금하여 찾아보게 되었다. (Bean 으로 등록하여 사용하지 않으면 `LettuceConnectionFactory was not initialized through afterPropertiesSet()` 오류가 발생한다.) 설명 Spring 에서 Redis 서버와의 연결을 위해 getConnection 메서드를 호출한다. getConnection 메서드 내부에는 assertInitialized 검증 메서드를 호출한다. assertIntialized 는 initalized 변수를 통해 초기화 여부를 판단하는데, 해당 변..

    [Spring Boot] custom error page 적용(feat. 예제, ErrorController)

    상황 Spring 을 통해 웹서비스를 제공할 때 오류가 발생하면 에러 페이지(white label, 위사진)에 도달하게 되는데, 해당 에러 페이지와 웹서비스의 디자인이 많이 다름으로 사용자로 하여금 혼란이 올 수 있다는 생각이 들어서 임의의 에러 페이지를 제공하고자 하였다. 간단한 설명 Spring 에서는 에러 페이지 생성을 위해 ErrorController 를 제공한다. ErrorController 를 사용하면 default 에러 페이지 핸들러를 대체하게 된다. 예제 코드 밑에 자세한 설명을 포함하였습니다. Custom Error Page 예제 View 생성 성공적으로 접근 되는 것을 확인하기 위한 페이지와, 에러 페이지 중에서 404 와 500 을 재연하기 위해 세개의 view 를 생성한다. inde..

    [Spring Boot] JWT 라이브러리를 의존성 추가했음에도 빌드 오류가 나는건 왜일까?(feat. `io.jsonwebtoken:jjwt-api`)

    발단흔히 사용하는 jwt 라이브러리인 jjwt 를 사용하여 개발하려 하니 2018년도 이후로 업데이트 되지 않고 있었다. 예제로도 jjwt 를 사용하는 경우가 많지만 최신 패키지인 jjwt-api 가 있기에 이를 사용하여 공부하던 도중 문제가 발생한 의존성에 대해 트러블 슈팅 하는 과정을 작성하였다. 환경Spring Boot: 3.1.0 (kotlin, gradle)jjwt-api 0.11.5 jjwt 와 jjwt-api 의 상관관계 GitHub - jwtk/jjwt: Java JWT: JSON Web Token for Java and AndroidJava JWT: JSON Web Token for Java and Android. Contribute to jwtk/jjwt d..

    [Spring Boot] s3 aws-java-sdk(v 1.1) 을 사용하는 개발환경에서 SSL 인증서와 무관하게 통신하는 방법(feat. ValidatorException: PKIX path building failed)

    발단 개발 환경에서 object storage 에 접근할 때 SSL 인증서 이슈로 임시로 https 를 허용해야 하는 상황이 발생하였다. PKIX(Public Key Infrastructure X.509) 오류 PKIX : 인증서 기반의 보안 인프라 오류 발생 경우 일반적으로 신뢰할 수 없는 인증 기관에 의한 발급 인증서의 유효 기간이 만료 도메인 이름과 일치하지 않는 경우 혹은, Java 의 신뢰할 수 있는 인증서 리스트에 등록한 인증서가 없는 경우 코드 /** * 설명 * - AmazonS3 클라이언트를 구성하는 코드입니다. * */ AmazonS3ClientBuilder.standard() .withEndpointConfiguration( ... ) .withClientConfiguration( C..

    [Spring Boot] Spring Boot 에서 JPA 로 값을 수정시 알 수 없는 이유로 sql 에러가 발생할 때(feat. SQL Error: 1064, SQLState: 42000)

    발단 DB 에서 값을 변경하려고 JPA 를 통해 시도하였을 때 필자 입장에서는 단순한 VARCHAR(1) 구조의 필드 였음으로 수정되어 마땅한 상황이었지만, 왜인지 SQL Error: 1064, SQLState: 42000 오류가 지속적으로 발생하였다. 설명 필자가 사용한 테이블에는 DB 의 예약어를 포함하고 있었다 (예약어인지 모르고 필드로 사용). 테이블의 값을 수정하려 할 때 예약어를 수정하려 한 것은 아니지만, JPA 가 객체 형태로 영속성 매니저에게 값을 전달하고 있었기에 DB 에 전달한 query 를 실행하면서 syntax error 가 발생하게 된것이다. 예시 DB 구조 CREATE TABLE `test1` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `openYn..

    [Spring Boot] Spring Boot(Kotlin) Gradle 환경에서 docker 이미지를 추출하는 방법(feat. bootBuildImage)

    설명 환경 윈도우즈 docker desktop 설치됨 Spring Boot 프로젝트 kotlin Gradle 로 빌드툴을 설정했을 경우 다음과 같은 탭을 찾아볼 수 있다. Gradle 빌드 툴이 제공해주는 docker image 빌드 명령어이다. Image 저장되는 장소 아무런 설정을 하지 않았을 경우 docker 로컬에 저장된다. 이는 docker desktop 과 docker CLI 를 통해 확인 가능하다. docker command : docker images docker 이미지 변경 build.gradle.kts 파일에서 다음과 같이 작성할 경우 이미지명이 변경된다. tasks.getByName("bootBuildImage"){ imageName.set(".../request-test:latest..