본문 바로가기

spring & boot/Spring & Spring Boot21

[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.
[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 Cloud] Spring Cloud Gateway - 개념 & 예제(로깅, 모니터링) Spring Cloud GatewaySpring Cloud Gateway 의 기본 개념과, 간단한 예제로 사용해보도록하자. 1. Gateway 란?Gateway, 단어 그대로의 의미로 '관문', '통로' 라는 의미를 가지고 있다. 네트워크 개념에서의 Gateway 란데이터(패킷)이 지나가는 통로이며, 출발지 Network 에서 도착지 Network 에 도달하기 까지 거쳐야하는 필수적인 통로(관문)이다.즉 서로다른 네트워크간 통로의 역할을 수행하는것이다. 일상생활에서 흔하게 볼 수 있는 Wifi 공유기를 보자면 이는 Router 라고 하며, Gateway 의 개념과는 조금 다른 부분이다.Gateway 는 특정 장비, 기기가 아닌 IP 주소를 기반으로 찾아가며Router 는 외부 네트워크(WAN)를 내부 .. 2025. 3. 18.
[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.