코루틴 기반 Spring 비동기 처리 (With WebFlux)
·
Language·CS/Java·Kotlin
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기Kotlin을 쓰기 시작하면서 가장 강력하다고 느낀 기능 중 하나가 코루틴(Coroutines)이었어요.Java의 Future, CompletableFature와 비교하면 훨씬 단순하고 가볍고, WebFlux와 결합하면 비동기 코드를 동기 코드처럼 읽을 수 있는 장점이 있습니다.이번 글에서는 코루틴의 기본 개념부터 Spring WebFlux에서의 활용, 그리고 실전 비동기 처리 예제까지 정리해봤어요.1. 코루틴 기본 개념 (suspend, launch, async)코루틴은 경량 스레드(lightweight thread)라고 표현되곤 하지만, 정확히는 스레드를 정유하지 않는 비동기 로직 실행 모델이에요.핵심 키워드는 suspend, launch,..
Kotlin + Spring Boot 프로젝트 환경 구성
·
Language·CS/Java·Kotlin
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기Java에서 Kotlin으로 개발 언어를 바꾸면서 가장 먼저 부딪히는 단계가 바로 "프로젝트 환경 구성"이었어요.Spring Boot는 Kotlin을 공식 지원하고 있지만, 몇 가지 설정을 알아두면 개발 경험이 훨씬 좋아지고, 반대로 설정을 잘못하면 JPA 문제나 Jackson 역직렬화 오류가 자주 발생할 수 있습니다.이번 글에서는 Spring Boot를 Kotlin으로 구성할 때 꼭 알고 있어야 하는 핵심 요소들을 정리했습니다.1. Gradle Kotlin DSL (build.gradle.kts)Kotlin DSL은 기존 Groovy DSL보다 타입 안정성이 높고 자동 완성이 잘 되어 생산성이 좋아요.여기서는 기본적인 Spring Boot +..
3. 확장 함수(Extension Function)로 Spring 코드 최적화
·
Language·CS/Java·Kotlin
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기확장 함수(Extension Function)로 Spring 코드 최적화하기Kotlin을 사용해 Spring 개발을 하면서 가장 크게 체감했던 이점 중 하나가 확장 함수(Extension Function)였어요.확장 함수는 기존 클래스에 기능을 “추가하되, 해당 클래스를 수정하지 않고도” 메서드를 붙일 수 있다는 점에서 Spring 애플리케이션 구조를 단순하게 만드는 데 정말 강력했습니다.이번 글에서는 Spring 코드에서 확장 함수를 어떻게 활용해 구조를 더 읽기 좋고 유지보수하기 쉽게 만들 수 있는지 정리해봤습니다.확장 함수 기초 개념확장 함수는 다음과 같은 방식으로 선언합니다:fun 클래스명.함수명(): 반환타입 { // this는 ..
2. Spring MVC를 Kotlin답게 작성하는 방법
·
Language·CS/Java·Kotlin
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기Java 기반으로 Spring MVC를 작성해오다가 Kotlin으로 전환하면서, 코드 구조가 훨씬 단순해졌습니다.특히 Controller, Service, Repository 흐름이 Kotlin 문법과 자연스럽게 맞물리면서 불필요한 보일러 플레이트 코드가 많이 줄었습니다.이번 글에서는 Spring MVC 구조를 Kotlin답게 작성하는 방법을 실제 코드 중심으로 정리했습니다.Controller / Service / Repository 기본 구조Kotlin으로 Spring 코드를 작성하면 가장 먼저 달라지는 부분이 "클래스 선언 방식"이었어요.Controller@RestController@RequestMapping("/users")class Us..
1. Kotlin을 처음 쓰는 Spring 개발자를 위한 핵심 문법 가이드
·
Language·CS/Java·Kotlin
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기근래 개발 연합 동아리 YAPP 27기에서 Server 파트로 활동하게 되었어요.OT에서 함께 프로젝트를 진행할 동료 Server 개발자와 기술 스택에 대해 이야기를 나누면서, 프로젝트는 하나의 언어로 맞추는 것이 좋겠다는 결론을 내렸습니다.저는 Java 기반 백엔드 개발자로 활동해왔고, 함께하는 동료는 Kotlin 개발자였어요. 자연스럽게 Kotlin을 사용하는 방향으로 논의하게 되었고, 예전부터 Kotlin을 배워보고 싶었던 만큼 이번 기회에 언어를 전환하기로 결정했습니다.이 글은 Java만 사용해온 백엔드 개발자가 Kotlin을 학습해 가는 과정을 기록한 내용으로 구성했습니다.총 5개의 글로 정리해볼까 생각 중이에요 1. Kot..
[Java] 컴파일 과정
·
Language·CS/Concepts
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기자바는 OS에 독립적인 특징을 가지고 있다. 그게 가능한 이유눈 JVM(Java Virtual Machine) 덕분이다.JVM(Java Virtual Machine)의 어떤 특성 덕분에 OS에 독립적으로 실행시킬 수 있는지 자바 컴파일 과정을 통해 알아보자. Java 컴파일 순서개발자가 Java 소스 코드(.java)를 작성한다.자바 컴파일러(Java Compiler, javac)가 자바 소스 파일을 컴파일한다. 이때 나오는 파일은 자바 바이트 코드(.class) 파일로 아직 컴퓨터가 읽을 수 없는, 자바 가상 머신(JVM)이 이해할 수 있는 코드이다.바이트 코드의 각 명령어는 1byte 크기의 Opcode와 추가 피연산자로 이루어져 있다.컴파..
✏️ [Java] 내가 Java17을 선택한 이유
·
Language·CS/Concepts
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기24년도에 진행한 두 개의 프로젝트 Sucat, 스스LAW에서 나는 모두 Java17을 선택해서 사용했다.이번 글에서는 Java8, Java11, Java14, Java17 ... 등 많은 버전에서 Java17을 선택한 이유를 작성해보려고 한다.참고로 Spring Boot 3.0부터는 Java17부터 지원하고 있기 때문에 Spring Boot 3.0 이후 버전을 고려하고 있다면 Java17 이상을 도입해야 한다.⭐️ Java17? 다른 버전과 차이가 뭔데?Java11Java8과 경쟁 상대로 가장 많이 언급되었던 것은 Java11이다. 그 이유는 우선 LTS였기 때문이다.Oracle에서 Java8을 사용한 레거시 프로젝트들이 너무 많은 것을 고려..
✏️ [Java] Spring WebFlux - 비동기 처리 이해하기
·
Language·CS/Concepts
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기AI-SW Developers 공모전이 다음주인 1월 16일에 최종 발표를 한다.최종 발표전 지금까지 작성했던 코드를 분석하면서 공부를 하고 있는데 이해가 부족한 부분들이 보였다. 오늘은 몇 가지 키워드와 함께 Spring WebFlux와 비동기 처리를 공부하려고 한다.공부 키워드Spring WebFlux, Redis 퍼블리싱, WebClient, Reactor, Mono 타입, 리액티브 프로그래밍⭐️ Spring WebFluxWhy was Spring Webflux created?Spring Webflux가 만들어진 이유 중 하나는 적은 수의 스레드로 동시성을 처리하고 더 적은 하드웨어 리소스로 확장하기 위해 비동기(non-blocking) ..
✏️ [Java] record에 대하여
·
Language·CS/Concepts
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기최근 JPA를 사용해서 만든 게시판 프로젝트를 리팩토링 하면서 여러가지를 적용하고 있다.그 중 큰 흥미와 도움이 됐던 record에 대해서 글을 써보려고한다.record는 자바 14, 15에서 preview로 추가된 이후 16버전에서 정식 스펙이 됐다.파이썬의 dictionary, C#의 record, kotlin의 data class처럼 특정 값 타입을 담는데 특화되었다는 record, 보면 볼수록 VO와 DTO로 쓰기 좋아 보인다.📌 record 등장 배경본격적으로 들어가기에 앞서 DTO를 생각해보자.DTO를 구현하기 위해서는 getter, setter, equals, hashCode, toString 같은 데이터 처리 혹은 특정 연산을 ..
✏️ [Java] 코딩 테스트 준비를 위한 입출력
·
Language·CS/Concepts
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기저는 원래 파이썬으로 코딩 테스트를 준비했습니다.여러가지 이유가 있지만 가장 큰 이유 2가지는처음 사용했고, 처음 코딩테스트 문제를 푼 언어가 파이썬이다.데이터 관련 학과 특성상 파이썬이 주요 언어이다.위와 같은 이유 때문에 지금까지는 코딩테스트를 파이썬으로 준비를 했습니다.그러나 근래에 자주 의문이 생깁니다.'나는 자바 백엔드 개발자를 준비하는데 파이썬보다는 자바로 코딩 테스트를 준비하는게 좋지 않나?'라는 의문입니다. 실제로 요즘 자바 백엔드 직군의 코딩 테스트 언어를 자바로 제한하는 기업도 점점 늘어나는 추세이고, 부트캠프 또한 마찬가지였습니다.제가 당장 1~2달 뒤에 코딩 테스트를 봐야하는 상황이라면 자바로 코테 언어를 변경하지 않겠지만..