spring boot16 [Spring Boot] Spring boot Java 프로젝트 에서 Kotlin 프로젝트로 전환(Cloud Gateway) Spring Cloud Gateway Java 에서 Kotlin 으로 전환현재 홈서버에서 외부에서 들어오는 모든 요청을 받아서 내부에 있는 각 Service 들로 Routing 해주는 API Gateway 모듈이 하나 존재한다. 현재는 Java 기반으로 구축되어있지만 해당 모듈을 Kotlin 기반으로 전환해볼것이다.다만 해당 모듈은 JPA 를 사용하고 있지 않으므로, JPA 전환과 관련된 내용은 미약할 예정이다. Intellij 에서는 Convert Java File to Kotlin File 기능을 기본적으로 지원하지만, 완벽하게 변환을 해주지 않고, Kotlin 의 특징을제대로 살리지 못한다는 느낌을 받았다. 그래서 가벼운 모듈을 전환해보면서 어떤 방식으로 전환하고 주의할점이 무엇인지 확인할 예정이다.. 2025. 9. 2. [Spring boot] QueryDSL 보안취약점 - OpenFeign QueryDSL 마이그레이션(Kapt) QueryDSL 보안취약점과 OpenFeign QueryDSL 로 마이그레이션 Spring boot 기반의 서버 개발을 진행하다 보면 QueryDSL 도입이 고려되는 경우가 존재한다.하지만 QueryDSL 에 도입이 망설여지는 이유들과(걱정되는부분), kotlin 으로 개발 진행시 kapt 를 사용중이라면 KSP 로 마이그레이션을 해야하는지 등 QueryDSL 관련된 부분들과, APT(Annotation Processing Tool) 에 관련된 내용을 서술해보도록 하겠다. 목차QueryDSL 의 문제점QueryDSL 의 보안 취약점(CVE-2024-49203)OpenFeign QueryDSLOpenFeign QueryDSL 적용(전환)목차별로 필요한 부분만 확인! 1. QueryDSL 의 문제점우선.. 2025. 6. 12. [Redis] DistributedLock(Spin Lock) - Spring boot 1. DistributedLock(분산락) - Spin Lock 방식서비스를 구현하다보면 많은 문제가 발생하고는 합니다. 그 중 가장 많이 대두되는 문제중 하나는 바로 동시성 문제(Race Condition) 입니다. 분산환경 즉 여러대의 서버 혹은 인스턴스가 동일한 자원(DB, 파일, 캐시 등)을 동시에 접근하려 할때 발생하는 문제로 경우에 따라 크리티컬한 문제를 발생시킬 수 있는 요소입니다. 이런 동시성 문제를 방지하기 위해 "Lock" 이라는 개념이 필요하게 되며, Lock 을 구현하는 방법중 하나인 Redis 를 이용하게 되고, Lock 구현 방식에 따라 어떤 Redis 라이브러리를 선택해야 하는지 결정을 해야만 합니다. 분산락을 구현하는 방법들은 다음과 같습니다.Redis 기반, Zookeepe.. 2025. 4. 16. [Spring] Gateway - 해외 IP 차단(필터링) Spring Cloud Gateway - 해외 IP 차단이전 포스팅에서 홈서버로 들어오는 Request 중 해외 IP 로 요청한 경우는 차단(Block) 했었다고 언급만 했었다. 도메인과 Reverse Proxy Server 를 연결 한 이후부터 서버 IP 가 공격자들에게 노출되었는지 매시간 수많은 공격들이 들어오고 있던 상황이었다. (SQL Injection, Brute Force, IDOR(Insecure Direct Object Reference 등등 ....)나의 서버의 경우 해외에서 수요가 있는것도 아니고, 국내에서만 유효하면 됬기에 해외 IP 차단을 계획했다. 홈서버 아키텍처 확인하기 GeoIP2 라는 국가별 IP 를 확인할 수 있는 오픈소스솔루션을 사용할 예정이다.Reverse Prox.. 2025. 4. 2. [Spring Boot] @Qualifier 무시 오류(Lombok @RequiredArgsConstructor) @Qualifier 무시 오류(Lombok @RequiredArgsConstructor)라이브러리 개발도중 발생한 문제이다. 우선 Bean 과 의존성 주입에 대해서 간략하게 살펴보도록 하자. Spring IoC Container 는 Bean 을 생성,관리 하여 의존성 주입을 대신 해준다.다만 Bean 으로 등록하게 될 타입이 여러개가 존재한다면 개발자가 어떤 Type 을 사용할 것인지 명시해 주어야 한다. // Interfacepublic interface ServiceTarget{}// Impl 1@Servicepublic class TargetImpl implements ServiceTarget {}// Impl 2@Servicepublic class TargetImpl2 implements Serv.. 2025. 2. 5. [Spring boot] Spring Boot 라이브러리(Library) 개념 및 만들기(1) Spring Boot 라이브러리(Library) 개념 및 만들기(1)web, application 을 개발하다보면 라이브러리(Library) 라는 말을 자주 듣게 되고, 거의 필수적으로 사용하게 된다.필자는 여러가지 모듈들에 반복적이고 공통적으로 들어가는 기능을 대체하기 위해 라이브러리를 만들기 위해 공부했던 내용들을해당 글에 담았다. 그럼 라이브러리가 어떤 개념인지, 어떤방법으로 만들고 적용 할 수 있는지에 대해서 아래에 설명하겠다. 1. 라이브러리(Library) 란?라이브러리(Library) 는 공통적인 기능을 재사용하기 위해 별도로 분리된 코드 모음(모듈)이다.여러개의 프로젝트, 모듈에서 공통적으로 쓰이는 코드를 반복적으로 작성하지 않고, 공통 모듈로 만들어서 필요한 모듈에서 의존성 형태로 가져.. 2024. 12. 27. [Spring Boot]OAuth2: Authorization-Server (Custom 인증 서버 구축)(2) OAuth2: Authorization-Server (Custom 인증 서버 구축)(2)지난 포스팅에 이어서, Spring Security에서 제공하는 spring-oauth2-authorization-server 를 나의 Application에 맞게 수정해 볼 예정이다. Spring Security 에서 제공하는 기본적인 Security Config 라던지, 기본적인 개념은 아래의 글을 참고하는 것을 추천한다. https://lucas-owner.tistory.com/79 [Spring boot] OAuth2: Authorization-Server (인증 서버 구축)(1)OAuth2: Authorization-Server (인증 서버) 개요요즘 사용하는 대부분의 web, app 에서는 사용자를 인증 .. 2024. 11. 20. [Spring boot] Spring Boot 3.x^ - Swagger 적용(2) Spring Boot 3.x 버전 Swagger 적용 Spring boot 3.x 이전 버전에서의 Swagger 적용 및 Test 관련 사항은 아래 링크에서 확인하세요! https://lucas-owner.tistory.com/28 [SpringBoot] Swagger API 문서 자동화 간단 연동, 테스트하기Swagger-ui 를 활용한 문서 자동화 - 개발한 Rest API 들의 목록을 확인하고 테스트 할 수있는 Swagger-UI를 Spring Boot 프로젝트에 연동(설정)하고 사용 하는 방법을 알아보자. ○ Swagger란 ? Swagger는 개발한lucas-owner.tistory.com Spring Boot 를 3.x 이상 버전에서는 이전버전의 Swagger 와 별도로, Springdoc O.. 2024. 11. 14. [Spring boot] OAuth2: Authorization-Server (인증 서버 구축)(1) OAuth2: Authorization-Server (인증 서버) 개요요즘 사용하는 대부분의 web, app 에서는 사용자를 인증 하고 그에 맞는 권한을 부여하여 자원에 접근가능하게 한다.이러한 인증, 인가는 보안에 있어서 가장 핵심적인 문제이고 설계부터 신경을써서 해야한다. 애플리케이션만의 고유한 인증, 인가 체계가 존재한다면 좋겠지만, 필자의 경우에는 여러개의 앱,웹 애플리케이션에 독자적인 인증,인가 기능 구현에 시간을 쏟는것보다는 독자적인 Auth Server 를 통해 비지니스에 집중하기 위해 서버를 만들기로 결정했다. 또한 이렇게 구현했을때의 장점도 존재한다 SSO(Single Sign on) 을 통해 한번의 로그인으로 여러개 사이트에 접속하여 이용할 수 있다는것이다. 그렇다면 비슷한 역할을 해.. 2024. 11. 13. 이전 1 2 다음