본문 바로가기

스프링 부트/코틀린9

[코틀린] redis cache 적용 시키기 설치법은 아래에 있어요 2022.02.03 - [맥북 M1] - 맥북으로 도커에 redis 설치하고 실행해보기 build.gradle에 추가 //redis 추가 implementation("org.springframework.boot:spring-boot-starter-data-redis") 메인 어플리케이션에 @EnableCaching을 추가해야 캐시를 쓸 수 있다. @SpringBootApplication @EnableJpaAuditing @EnableCaching class KotlinTestApplication fun main(args: Array) { runApplication(*args) } RedisConfig 추가 직렬화해서 저장할거기 때문에 StringRedisSeriablizer()을 .. 2022. 3. 11.
[코틀린] 생성시간, 수정시간 Auditing으로 자동 적용하기 메인쪽에 @EnableJpaAuditing 추가 @SpringBootApplication @EnableJpaAuditing class KotlinTestApplication fun main(args: Array) { runApplication(*args) } BaseEntity 생성 직렬화가 필요할땐 @Serializable을 적용시켜야 한다. @MappedSuperclass가 꼭 필요 @MappedSuperclass @EntityListeners(AuditingEntityListener::class) abstract class BaseEntity( @CreatedDate var createdDate: LocalDateTime?=null, @LastModifiedDate var modifiedDate: .. 2022. 3. 11.
[코틀린] QueryDSL 초기 설정법 build.gradle 설정은 이렇게 해주세요. 주석에 기본 설정이랑 추가 설정 QueryDsl정도만 보시면 될 거 같습니다. import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("org.springframework.boot") version "2.5.10" id("io.spring.dependency-management") version "1.0.11.RELEASE" kotlin("jvm") version "1.5.32" kotlin("plugin.spring") version "1.5.32" //기본 설정 추가 kotlin("plugin.allopen") version "1.5.32" kotlin("kapt") version "1... 2022. 3. 11.
[코틀린] 인터페이스 사용법 인터페이스 선언 interface MyInterface{ fun bar() fun foo(){ // optional body } } 인터페이스 구현하기 : 뒤에 interface 명만 넣어주면 됩니다. class Child : MyInterface{ override fun foo(){ // body } } 인터페이스 상속 interface Named { val name: String } interface Person : Named { val firstName: String val lastName: String override val name: String get() = "$firstName $lastName" } data class Employee( // implementing 'name' is not .. 2022. 3. 9.
[코틀린] 데이터 클래스 data class 기존 자바는 POJO라는 것이 코드를 많이 차지하고 있다. public class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } 코틀린은 데이터만을 다루는 클래스에 대해서 간편한 문법을 제공한다. data class Person(var name: String, var age: Int, var gender: String) 이렇게 선언만 해도 생성자, Getter,Setter, equals, hashcode,toString까지 알아서 생성한다. 그러나 Data class에는.. 2022. 3. 9.
[코틀린] for문, while문, Iterator 사용법 For문 사용법 일반적인 자바에서 for문을 사용할 수 있다. val cakes = listOf("carrot", "cheese", "chocolate") for (cake in cakes) { // 1 println("Yummy, it's a $cake cake!") } for(i in 0..3) { // 1 print(i) } print(" ") for(i in 0 until 3) { // 2 print(i) } print(" ") for(i in 2..8 step 2) { // 3 print(i) } print(" ") for (i in 3 downTo 0) { // 4 print(i) } print(" ") 결과 값 until은 b) a else b // 1 println(max(99, -42)) 2022. 3. 9.
[코틀린] 코틀린 기초 함수 변수 선언법 Hello World!! fun main(args: Array) { println("Hello, world!!!") } 함수 선언 시: fun을 사용 자바와 달리 이름 뒤에 파라미터 타입 사용 함수를 정의할 수 있다. 배열 처리를 위한 문법은 없다. System.out.println 대신 println으로 간결해졌다. 줄 끝에 ;(세미 콜론)을 붙이지 않아도 된다. 함수를 만들어 보자 fun max(a: Int, b: Int): Int { return if (a > b) a else b } 더 간결하게 만들어 보자 fun max(a: Int, b: Int): Int = if (a > b) a else b 인텔리J 인텔리제이에선 반환 타입을 생략해도 된다. 코틀린이 정적 타입 지정 언어지만 컴파일러가 본문.. 2022. 3. 9.
[코틀린] 코틀린이란 무엇일까? 코틀린이란 자바 플랫폼에서 돌아가는 프로그래밍 언어입니다. 자바와 완벽 호환되어 코틀린으로 많이 넘어간다고 해요. 맛보기 // 데이터 클래스 data class Person( val name: String, val age: Int? = null // 널이 될 수 있는 타입 지정, 디폴트 값 ) // 최상위 함수 fun main(args: Array) { val persons = listOf( Person("Alice"), Person("Bob", age = 29) // 이름 붙은 파라미터 ) val oldest = persons.maxBy { it.age ?: 0 } // 람다 식과 엘비스 연산자 println("The oldest is: $oldest") // 문자열 템플릿 } 코틀린의 특성 코틀린의 .. 2022. 3. 9.
[코틀린] 맥북에 설치하고 스프링 Rest API로 CRUD 해보기 설치 우선적으로 코틀린 설치가 되어 있어야 합니다. 설치는 Homebrew를 이용합니다. //코틀린 설치 brew install kotlin //설치 확인 kotlinc -version 프로젝트 만들기 https://start.spring.io/ 에서 쉽게 만들 수 있어요. postgresql을 사용했지만 다른 mysql이나 mongoDB를 사용하셔도 무방합니다 yml 설정 spring: jpa: hibernate: ddl-auto: create-drop datasource: password: '{password}' username: {username} url: jdbc:postgresql://localhost:5432/{database name} driverClassName: org.postgresql.. 2022. 3. 8.