Kotlin 6

Spring/Kotlin
[Kotlin + Springboot + JPA] Entity 연관관계 (지연로딩, OrphanRemoval 확인) by Kotlin

Kotlin으로 Springboot 를 해보면서 정상적으로 JPA가 연관관계를 정상적으로 매핑하고 동작하는지 궁금하였다! 그래서 간단한 게시글에 댓글을 구현하여서, Post 엔티티와 Comment 엔티티를 일대다 관계로 매핑을 해보자! 1. Post Entity @Entity @Table(name = "post") class Post( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "post_id") var id: Long = 0, var title: String, var contents: String, @ColumnDefault("0") var view: Long = 0, @Enumerated(EnumType.STRING)..

Spring/Kotlin
[Kotlin+Springboot+JPA] Exception Handling by Kotlin

사용할 클래스 1. ErrorCode : 모든 예외 케이스를 관리 하는 클래스. 2. ErrorResponse: JSON 형식으로 에러 응답 형식 작성. 3. Exception: 기본적으로 제공되는 Exception 이외에 추가할 Exception (예시로 EntityNotFound 그냥 구현). 4. GlobalExceptionHandler - @ControllerAdvice: 프로젝트 전역에서 발생하는 Exception을 잡아주는 클래스 - @ExceptionHandler: 특정 Exception 을 지정해서 별도로 처리함. 1. ErrorCode를 Enum 클래스로 정의 해준다. enum class ErrorCode( private val status: Int, private val errorCod..

Spring/Kotlin
[Springboot + Kotlin] Slack 채널 메세지 전송 연동.

동기 새로운 게시글이 작성될 때, 알림을 받고 싶어서 slack 을 이용하기로 정하였고 가벼운 실습을 진행하기로 하였다. 1. Slack -> 앱 -> " Incoming WebHooks"를 추가해준다! 추가를 하고나서, 원하는 채널을 생성 또는 선택 하면 생성되는 WebHook URL 을 복사해줍니다. 예시 : https://hooks.slack.com/services/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 !! 다음과 같은 설정을 할 수 있습니다! !! 2. 프로젝트의 applicatiion.yml 파일에 아래 내용을 추가합니다! (저는 게시글을 생성하면 Slack 에 메세지를 전송해주기 위한 목적으로 생성하겠습니다.) slack: webhook-ur..

Spring/Kotlin
[Kotlin + Springboot + Kotest] Kotest 알아보자.

코틀린으로 서버사이드로 개발을 하던 도중, kotest 라는 테스트 툴에 대해서 알게되었다. 한번 사용해보자! Kotest 준비 Maven dependency 추가해주기. io.kotest kotest-runner-junit5-jvm 4.6.1 test io.kotest kotest-assertions-core-jvm 4.6.1 runtime gradle dependency 추가해주기. //kotest 추가. runtimeOnly("io.kotest:kotest-assertions-core-jvm:4.6.1") testImplementation("io.kotest:kotest-runner-junit5-jvm:4.6.1") Intellij 에서도 플러그인 설치를 해줘야 함! Kotest 사용해보기! 우선 ..

Spring/Kotlin
[Kotlin + Springboot + JPA] Entity 생성에 관하여.

무작정 코틀린에 대해서 접하였고 기본적인 문법을 공부하고, 간단한 게시판CRUD를 만들면서 참고할만한 글들을 찾아보는데 어떠한 글은 Entity 생성시 data class 를 사용하는 글과, 일반 class를 사용하는 경우가 다양하여서 한번 무슨차이가 있을지 정리해보고 싶었다. 우선 data class 가 뭔지 살펴보자!! 간단한 정보만 정리해보면, https://kotlinlang.org/docs/data-classes.html data 를 저장하기 위한 클래스라고 한다. 컴파일러가 자동으로 primary constructor 의 properties 로 부터 아래의 멤버들을 생성한다. equals() / hashCode() toString(); 선언 순서대로 각 property 에 해당하는 compon..

Spring/Kotlin
[Kotlin + SpringBoot + JPA] Swagger 설정 및 동작

Swagger 사용 설정 저는 본격적인 개발을 시작하기 전에, Swagger를 사용 설정을 해주었습니다. 1. 우선 필요한 해당 의존성을 추가해주었습니다. //swagger 추가. implementation("io.springfox:springfox-swagger2:2.9.2") implementation("io.springfox:springfox-swagger-ui:2.9.2") 2. @Configuration을 추가해주었습니다. @Configuration @EnableSwagger2 class SwaggerConfig { @Bean fun api(): Docket { return Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSe..