목록IT/Java & Kotlin & Spring boot (15)
And Brain said,
오늘은 현재 안드로이드의 공식 언어이자 태생부터 진화된 자바를 표방한 언어, Kotlin에 대해 알아보고 Kotlin으로 구축하는 간단한 Spring boot 예제까지 배워보도록 하자. 최신 언어가 기존의 언어를 대체하기란 정말로 쉽지 않다. 대부분의 사람들은 익숙한 것을 좋아하고 또한 기존 코드가 너무 방대하면 손을 댈 엄두를 못 내게 된다. 특히, 자바와 같이 높은 완성도의 언어라면 특별한 이유가 있지 않는 한 대체할 이유를 느끼지 못하게 된다. 구글도 오라클과 소송만 아니었다면 자바를 계속 썼을 것이다. 선결 이유가 어떻든 Kotlin은 안드로이드의 공식 언어로 채택되었고 사람들에게 자신의 존재감을 드러냈다. Kotlin은 이러한 전략을 사용했다. 기존 언어와 호환 앞서 기존 언어를 대체하려 했던 ..
직렬화와 역직렬화는 객체 데이터의 상태 그대로 저장하고 필요할 때 다시 꺼내서 사용하기 위해 쓰인다. 먼저 직렬화는 객체 데이터를 바이트 스트림으로 바꾸어 연속적인 데이터로 변환하는 것이다. 역직렬화는 그 반대로 바이트 스트림을 꺼내와 저장된 데이터의 상태 그대로 변환해주는 것을 말한다. 직렬화로 변환된 바이트 스트림은 플랫폼에 종속되지 않는 멀티플랫폼에서 역직렬화가 가능한 데이터다. 자바에서는 모든 클래스를 직렬화할 수는 없고 이렇게 Serializable 인터페이스만 구현해주면 직렬화와 역직렬화가 가능해진다. 또한 serialVersionUID 고유값을 주어 역직렬화 시에 같은 클래스인지 일치 여부를 확인한다. 만약 커스텀하게 주지않는다면 직렬화 시 자동 생성되어 직렬화 데이터에 포함된다. 하지만 직..
Spring boot는 기본적으로 json converter로 Jackson을 사용한다. 하지만, Jackson은 객체를 만들어서 매핑해줘야 한다는 단점이 존재해 Gson을 사용하여 더 편리하게 작업하고 싶을때가 있다. 이럴때 application.yml 파일에 이런식으로 기본 converter를 Gson으로 바꿔주고 라이브러리를 추가해주면 된다. 그런데 만약 여러분의 프로젝트가 OpenAPI Swagger 를 사용한다면 문제가 발생한다. Swagger는 Gson을 지원하지 않기에 문제없이 둘을 동시에 사용하려면 커스텀 설정을 할 수 밖에 없다. Gson을 이용하여 Swagger 직렬화를 한 뒤 bean으로 등록해주면 된다. 이런식으로 설정해준다면, Spring boot에서 문제없이 둘을 동시에 사용할 ..
오늘은 Firebase Cloud Messaging 이하, FCM에 대해 알아보고 FCM 서버와 간단한 Spring Boot Java API를 통해 통신하여 안드로이드 에뮬레이터에 Push 알림이 발송되는지까지 테스트해보도록 하자. FCM? FCM이란 무료 메시지를 보낼 수 있는 플랫폼 간 메시징 솔루션이다. 기존 메시지 전송 방식은 A가 Server를 통해 B에게 실시간으로 메시지를 전송하려면 B가 서버에 계속 접속해 있어야 했다. 이를 실제로 구현한다면, 많은 배터리와 네트워크 사용이라는 문제를 야기시켰다. 그리하여 나온것이 FCM이다. A가 Server를 통해 B에게 실시간으로 메시지를 전송한다는 방식은 같지만 중간에 Cloud Messaging Server가 끼어든다. A -> Server -> ..
시작하기에 앞서 Service Discovery에 대해 설명하겠다. 마이크로서비스 아키텍쳐에서는 분산된 마이크로 서비스들이 하나하나 원격으로 호출되어 전체를 이룬다. 이때 API Gateway에서 서비스들을 효율적으로 호출할 수 있도록 도와주는 것을 Service Discovery(발견)라고 한다. 자, 이제 Spring Netflix Eureka를 통해 Netflix OSS에서 어떻게 Eureka를 외치며 서비스를 발견하는지 알아보자. sts를 사용하여 새로운 Spring Starter Project를 만든다. 이렇게 적어주고, Next를 누른 뒤 추가적인 의존성 주입이 필요하진 않아서 Finish를 눌러 프로젝트를 생성하자. 4.0.0 org.springframework.boot spring-boot..