java

    Jackson에서 Boolean 직렬화 시 is가 사라지는 문제

    Swagger에서 JSON Request Body를 보는데 DTO랑 이름이 달라요! 발단 여느때와 다름없이 조용히 회사에서 개발을 하고 있는 도중, Swagger로 API 테스트를 위해 요청을 보내는데 debug에서 객체를 보았을 때, 특정 변수만 null로 들어오는 상황이 발생했습니다. 처음에는 JSON key가 잘못됐나 싶어서 다시 작성해보지만 마찬가지였습니다. JSON Body를 다시 한번 봐 보니 Boolean으로 선언한 'isUsing'이라는 변수가 직렬화 시 Swagger 내에서 제가 예상한 isUsing이라는 key와 달리 using으로 표시되는 것이였습니다. 일단 평소와 같이 @JsonProperty 어노테이션을 사용하여 JSON key를 임의로 지정을 했고, Swagger에서는 isUsi..

    [Kotlin] 코틀린 기초 #2

    함수 선언 (Function declaration) 코틀린은 함수를 자바보다 더 짧고 간단하게 생성할 수 있습니다. 기본적으로 fun 함수명 (파라미터): 리턴타입 의 형식을 따릅니다. fun add(a: Int, b: Int, c: Int): Int { return a + b + c } 리턴을 생략하고 표기 할 수 있습니다. fun add(a: Int, b: Int, c: Int): Int = a + b + c 타입추론으로 리턴타입 또한 생략 가능합니다. fun add(a: Int, b: Int, c: Int) = a + b + c 클래스 선언 (Class declaration) 코틀린은 class 앞에 public 키워드의 생략이 가능합니다. 자바와 다르게 생성자에 들어가는 파라미터의 기본 값을 지정..

    [Kotlin] 코틀린 기초 #1

    Kotlin 코틀린이란 Java IDE인 IntelliJ를 개발한 Jetbrains에서 개발한 JVM 에서 동작하는 언어입니다. 자바가 가지고 있는 약점을 개선할 수 있고, 기존 자바 코드와의 상호사용이 가능한 대체언어입니다. 웹 서비스, 안드로이드 개발 뿐만아니라 JavaScript 및 Swift와도 연동이 가능합니다. 2017년에 Google에서 안드로이드 공식 언어로 채택되면서 많은 관심을 받고 있습니다. Hello World! 모든 프로그래밍 언어의 시작은 Hello World! package com.maxjang.kotlin fun main(args: Array) { println("Hello World!") } 변수 선언 (Variable declaration) 코틀린은 기존 자바와의 변수 선..

    자바 클래스 이름에 Impl을 사용하지 말아야 하는 이유

    자바에는 abstract 클래스를 이용한 상속과 interface를 이용한 상속이 있습니다. 저는 interface로 기본 틀을 만들어 같은 기능을 하는 클래스에 다른 로직을 적용해야 할 때 많이 사용하고 있습니다. 스프링에서 Service 기능을 만들 때 UserServiceImpl, SettingServiceImpl 이런 구현체들을 많이 보셨을겁니다. 그러다가 전에 스프링부트로 개인프로젝트를 진행하면서 문뜩 생각이 났습니다. "어쩌피 서비스 하나 구현해서 쓸건데 왜 굳이 인터페이스를 구현하고 정의해서 쓰지?" UserService라는 interface를 만들고 UserServiceImpl 이라는 클래스를 하나 구현할건데 처음부터 클래스명을 UserService라고 하고 거기에 구현하면 되지 않을까 싶..