-
백엔드 데브코스 12기 65일차
이 날은 전날에 이어 Java 기반 Spring Boot 프로젝트를 Kotlin으로 전환했다. DTO와 요청 처리 클래스에서 시작했던 작업을 보안 설정, 인증 필터, 예외 처리 등으로 확장하면서 프로젝트 전반에서 공통으로 사용하는 코드의 역할을 살펴봤다.먼저 Spring Security 설정과 사용자 인증 정보를 담는 클래스를 Kotlin으로 바꿨다. 보안 설정에서는 Kotlin DSL로 URL별 접근 권한을 표현했고, 인증 필터에서는 헤더와 쿠키에서 인증 정보를 가져와 사용자를 확인하는 흐름을 살펴봤다. 코드를 옮기는 과정에서 API 키와 액세스 토큰이 어떻게 사용되고, 인증된 사용자 정보가 어디에 저장되는지 정리할 수 있었다.전환 과정에서 발견한 문제를 수정하며 Kotlin의 프로퍼티와 null 처리..
2026.10.16
-
백엔드 데브코스 12기 64일차
이 날은 기존 Java 기반 Spring Boot 프로젝트를 Kotlin으로 점진적으로 전환하는 방법을 배웠다.먼저 Kotlin을 사용할 수 있도록 Gradle에 플러그인과 의존성을 추가하고, Spring과 JPA를 위한 설정을 구성했다. 기존 프로젝트에 Kotlin을 도입할 때는 코드의 문법을 바꾸는 것뿐 아니라, 프레임워크와 함께 동작할 수 있는 환경을 준비하는 과정도 필요하다.이후 애플리케이션의 시작점과 HomeController를 Kotlin으로 바꾸고, 회원·게시글·댓글 DTO와 공통 응답 객체, 요청 처리 클래스도 차례로 전환했다. DTO에서는 data class와 주 생성자를 활용해 필요한 데이터를 한눈에 볼 수 있도록 표현했다. Java 코드와 비교하면서 Kotlin의 프로퍼티와 생성자가 ..
2026.10.14
-
백엔드 데브코스 12기 63일차
10월 12일부터 Kotlin으로 콘솔 명언 앱을 만들고 있다. 명언과 작가를 입력받는 프로그램에서 시작해 등록, 목록 조회, 삭제, 수정 기능을 구현했고, 13일에는 파일 저장과 검색 기능을 추가하고 테스트를 보강했다. 기능이 늘어나면서 역할을 나누기12일에는 Main에서 시작한 코드를 App으로 옮기고, 명령어와 파라미터를 해석하는 Rq를 추가했다. 이후 Controller, Service, Repository로 역할을 나누면서 사용자 입력 처리와 데이터 관리를 분리했다. 13일에는 Repository를 인터페이스로 바꾸고 메모리 저장소와 파일 저장소를 구현했다. 서비스가 사용하는 공통 기능을 유지하면서 저장 방식을 교체하는 구조를 통해, 인터페이스가 실제로 어떤 상황에서 필요한지 이해할 수 있었다...
2026.10.13
-
백엔드 데브코스 12기 62일차
이날은 Java → Kotlin 문법 비교 6편으로 생성자와 초기화 방식을 정리했다.Java와 Kotlin의 주 생성자, init 블록, 부 생성자를 비교하면서 객체를 생성하고 초기화하는 방식의 차이를 살펴봤다. 특히 Kotlin에서는 주 생성자에 val, var를 선언하는 것만으로 프로퍼티 초기화까지 처리할 수 있어 코드가 훨씬 간결해진다는 점이 인상적이었다.또한 Java에서 생성자 오버로딩으로 처리하던 부분을 Kotlin에서는 기본 매개변수로 간단하게 구현할 수 있다는 점도 다시 확인했다.이번 정리를 통해 Java 코드를 Kotlin으로 단순히 변환하는 것보다 Kotlin의 특성을 활용해 불필요한 코드를 줄이는 것이 중요하다는 것을 느꼈다.[Java → Kotlin] 자바 개발자를 위한 코틀린 문법 ..
2026.10.12
-
[Java → Kotlin] 자바 개발자를 위한 코틀린 문법 비교 ⑥ 생성자와 초기화
Java와 Kotlin은 객체를 생성하고 초기화하는 방식에서도 차이가 있다.Java에서는 생성자를 클래스 내부에 직접 작성하지만, Kotlin에서는 주 생성자를 클래스 선언부에 작성할 수 있다.또한 init 블록으로 초기화 로직을 실행하고, 필요에 따라 부 생성자를 추가할 수도 있다.이번 글에서는 Java와 Kotlin의 생성자 문법을 비교하고, Kotlin에서 더 간결하게 객체를 초기화하는 방법을 정리했다.1. 주 생성자 (Primary Constructor)Java에서는 생성자를 클래스 내부에 작성하고, 매개변수로 전달받은 값을 필드에 할당한다.Javaclass Person { private String name; private int age; public Person(String n..
2026.10.12
-
[프로그래머스 Lv.2] 타겟 넘버(Java)
문제https://school.programmers.co.kr/learn/courses/30/lessons/43165?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이각 숫자마다 + 또는 -를 선택하는 모든 경우를 DFS로 탐색하는 방식이다.dfs에서 현재 인덱스의 숫자를 더하는 경우와 빼는 경우로 나누어 재귀 호출한다. dfs(numbers, idx+1, target, sum+numbers[idx]);dfs(numbers, idx+1, target, sum-numbers[idx]); 따라서 숫자 하나를 처리할 때마다 두 갈래로 탐색하게 되며, 모든 숫자를 처리한 시점인 idx == n..
2026.10.10
-
백엔드 데브코스 12기 61일차
이날도 Java 코드를 Kotlin으로 전환하는 방법에 대해 배웠다.먼저 filter, map, forEach와 같은 컬렉션 함수와 apply, let, also, run, with 등의 스코프 함수를 학습했다. Java의 Stream API와 비슷한 기능을 Kotlin에서는 더 간결하게 사용할 수 있다는 점이 인상적이었다. 특히 스코프 함수마다 객체 자체를 반환하는지, 람다의 실행 결과를 반환하는지 구분하는 것이 중요하다는 것을 알게 되었다.이어서 lateinit, lazy, companion object, open, 상속과 인터페이스, 프로퍼티와 getter/setter에 대해서도 배웠다. 특히 Java에서 getter/setter를 직접 작성하던 부분을 Kotlin에서는 val, var, priva..
2026.10.08
-
[Java → Kotlin] 자바 개발자를 위한 코틀린 문법 비교 ⑤ lateinit, lazy, companion object, 상속과 프로퍼티
앞선 글에서는 Kotlin의 컬렉션 함수와 스코프 함수를 중심으로 Java와 Kotlin의 문법 차이를 정리했다.이번 글에서는 Java 개발자가 Kotlin으로 넘어갈 때 자주 접하게 되는 초기화 방식, 클래스 단위 멤버, 상속과 인터페이스, 프로퍼티와 getter/setter를 정리했다.1. lateinit으로 초기화를 나중에 하기Kotlin은 변수를 선언할 때 초기값을 지정하는 것을 권장한다.class User { var name: String = "Unknown"} 하지만 객체 생성 시점에는 값을 알 수 없고, 나중에 값을 할당해야 하는 경우도 있다.이때 사용할 수 있는 것이 lateinit이다. class User { lateinit var name: String fun setNa..
2026.10.08
-
[Java → Kotlin] 자바 개발자를 위한 코틀린 문법 비교 ④ 컬렉션 함수와 스코프 함수
지난 글에서는 Singleton, 예외 처리, when 등 Java와 Kotlin의 주요 문법 차이를 비교했다.이번 글에서는 Kotlin에서 자주 사용하는 컬렉션 함수, 엘비스 연산자, 타입 체크, 스코프 함수를 정리했다.특히 filter, map, let, apply, also, run, with는 Kotlin 코드를 읽고 작성할 때 자주 등장하기 때문에 각각의 용도를 구분해두는 것이 중요하다.1. 컬렉션 필터링Java에서는 Stream API의 filter()를 사용해 컬렉션에서 원하는 조건의 데이터만 추출할 수 있다.Kotlin에서는 컬렉션에 기본적으로 제공되는 filter() 함수를 사용할 수 있다.Javapublic class Main { public static void main(Stri..
2026.10.08