목록Kotlin (5)

Kotlin은 표준 스코프 함수를 제공한다.특정 객체의 컨텍스트 내에서 정해진 동작을 수행하기 위해 기본적으로 제공되는 함수이다.일반적으로 람다 함수로서 많이 사용하게 되는데, 람다가 적용되는 객체에 임시로 스코프를 형성하여 바로 핸들링하는 편리함을 제공한다. 가끔 사용하다가 헷갈릴 때 가 있어서 한번 정리를 해두려고 한다. 종류 : apply, run, with, alse, let apply적용되는 객체를 참고하여 새로운 인스턴스를 만들 수 있다. 이때, 초기화 작업과 특정 동작을 수행하여 인스턴스를 생성하고 반환한다.fun main(args: Array) { val youngJuni = Human("juni", 19) val oldJuni = youngJuni.apply { n..

Java 프로젝트를 할때 필수적으로 Optional을 사용할 수 밖에 없었다. JPA 에서 findById와 같은 메서드가 Optional 값을 반환하기도 하고, NPE를 피하기 위해서 또한 optional을 적극적으로 사용했다. Kotlin + Spring 으로 프로젝트를 만들다가 이제 JPA Repository를 사용해야 할 때가 되었는데, 당연히 CRUDRespository 에서 제공하는 findById를 사용하니 java와 동일하게 Optional을 사용하여 반환을 하게 된다. 이렇게 되면 testRepository.findById(testId).orElseThrow(() -> new DataNotFounExeption)과 같이 Optional의 메서드들을 사용해야 한다. Kotlin은 nulla..

백앤드 서버의 API를 편하게 문서화 할 수 있는 툴들이 제공된다. JavaDoc과 같은 툴들이 기본적이지만, 좀 더 예쁜 UI를 제공하고, 실제로 API를 사용하게 도와주는 swagger ui가 많이 사용된다. springboot + kotlin에 swagger를 적용해본다. / 기본 구성 / SDK 17 springboot 3.1.4 kotlin 예전에는 springfox를 기반으로 한 swagger가 제공되었다. 하지만 2020년 이후로 더이상 버전업이 이루어지지 않고 있다. 여기서는 springdoc을 기반으로 해서 swagger를 적용한다. build.gradle.kt 의 dependencies 추가 dependencies { ... implementation("org.springdoc:spri..
Java와 Kotlin은 유사한듯 다른 생성자 형태를 가지고 있다. 이번에 작성한 Entity를 살펴보자. @Entity @Getter class Memo(title: String, description: String) : BaseEntity(){ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private val id: Long? = null @Column(nullable = false) private var title: String = title @Column(nullable = false) private var description: String = description @ManyToOne(fetch = FetchType.LAZY) @JoinCo..

코프링 공부를 하기 위해 사이드 프로젝트를 시작했다. 프로젝트 생성은 다른 블로그들이 많이 생략하고... 엔티티 생성부터 시작한다. 프로젝트의 기본 구조는 자기 자신을 부모로 들고 있으며, 자기 자신 여러개를 자식으로 들고 있는 메모장 형태이다. createDate와 lastModifiedDate는 모든 곳에서 기본적으로 사용할 예정이므로, BaseEntity 라는 이름의 abstact Class로 빼서 사용한다. @MappedSuperclass @EntityListeners(AuditingEntityListener::class) abstract class BaseEntity { @CreatedDate @Column(nullable = false, updatable = false) var createdD..