전체 글
-
[Spring Boot] Spring Security 6에서 permitAll 경로 설정하기Spring Boot/기타 2025. 6. 5. 22:17
목차 Spring Boot 3.x 이상을 사용하면, Spring Security 역시 자동으로 6.x 버전을 적용하게 됩니다.하지만 Spring Security 6부터는 구조적으로 많은 변화가 있었고, 그중에서도 특히 permitAll() 경로 설정 방식이 가장 혼란스럽게 느껴질 수 있습니다. 특히 아래 항목들이 deprecated되거나 제거되면서, 기존 방식과의 호환성이 완전히 무너졌습니다. 주요 변화 요약WebSecurityConfigurerAdapter 완전 제거antMatchers(...) deprecatedauthorizeRequests(...)가 authorizeHttpRequests(...)로 변경AntPathRequestMatcher 직접 생성 방식도 deprecated 람다 기반 DSL ..
-
[Spring Boot] Redisson을 활용하여 분산 락 적용Spring Boot/기타 2025. 5. 18. 20:28
목차 1. Redisson이란?Redisson은 Redis 기반의 Java 클라이언트 라이브러리로, 분산 데이터 구조, 분산 락, 메시징 큐, 캐시 등을 간편하게 구현할 수 있도록 지원합니다. 특히 Spring Boot와 같은 프레임워크와의 통합이 용이하며, 동시성 제어나 데이터 공유에 강력한 기능을 제공합니다.Redisson의 주요 특징분산 데이터 구조: Redis의 다양한 데이터 타입(String, List, Set, Map 등)을 Java 객체처럼 다룰 수 있습니다.분산 락: 여러 인스턴스가 경쟁하는 환경에서 안전하게 동시성 문제를 해결할 수 있습니다.Pub/Sub: 이벤트 기반 메시징 큐 구현 가능.Spring 지원: Spring Data Redis와 호환되며, Spring Boot Starter..
-
[Git] 로컬 Git 리포지토리 초기화 및 새로운 원격 리포지토리 설정하기GIT 2025. 1. 4. 19:44
Git을 사용하다 보면 기존 프로젝트의 커밋 히스토리를 삭제하고, 소스 코드만 새 원격 리포지토리에 연결해야 할 때가 있습니다. 아래는 이러한 작업을 간단히 처리하기 위해 사용할 수 있는 명령어입니다.1단계 : 기존의 .git 폴더 삭제rm -rf .git먼저, 현재 프로젝트의 Git 연동을 끊기 위해 .git 폴더를 삭제해야 합니다. 이 명령어를 실행하면 Git의 모든 이력이 삭제됩니다. 즉, 프로젝트는 Git으로부터 완전히 분리됩니다.2단계 : 새로운 Git 리포지토리 초기화git init현재 프로젝트 디렉터리에서 새로운 Git 리포지토리를 초기화합니다. 이 명령을 실행하면 .git 폴더가 다시 생성되고, 초기화된 상태가 됩니다.3단계: 모든 파일 스테이징git add -A이 명령은 프로젝트의 모든 ..
-
[Spring Boot] Apache HttpClient 5 기반 RestClient 구성하기Spring Boot/기타 2024. 12. 29. 10:22
목차 RestClient는 HTTP 요청 시 다양한 HttpClient 라이브러리를 사용할 수 있으며, 이러한 라이브러리는 ClientHttpRequestFactory 인터페이스의 구현체에 의해 처리됩니다. RestClient에서 사용되는 ClientHttpRequestFactory 구현체는 다음과 같습니다.JdkClientHttpRequestFactory : Java의 기본 HttpClient를 사용HttpComponentsClientHttpRequestFactory : Apache HttpClient를 사용JettyClientHttpRequestFactory : Jetty의 HttpClient를 사용ReactorNettyClientHttpRequestFactory : Reactor Netty의 Htt..
-
[Spring Boot] Jedis를 활용하여 Redis에 JSON Path 기능을 테스트Spring Boot/기타 2024. 12. 11. 23:00
목차 Jedis 라이브러리를 사용하여 Redis에 JSON Path 기능을 활용하는 방법을 설명하겠습니다. 1. JSONPath & Redis JSON 개요JSONPath는 JSON 문서에서 데이터를 검색하거나 필터링할 때 유용한 쿼리 언어입니다. Redis는 JSON 데이터 타입을 직접 지원하며, JSONPath를 통해 데이터를 효과적으로 쿼리할 수 있습니다. JSONPath 주요 표현식 방식 표현식 예제 및 설명 전체 매칭 $JSON 문서의 루트 노드를 선택합니다. 예: $ 경로 접근 .특정 속성을 선택합니다. 예: $.store.book 배열 처리 [index] 또는 [*]배열 처리 [index] 또는 [*] 배열 인덱스로 접근하거나 배열의 모든 요소를 처리합니다. 예: $.store.boo..
-
[Spring Boot] Jedis를 활용하여 Redis에 대한 CRUD 작업을 테스트Spring Boot/기타 2024. 12. 11. 20:00
목차 Jedis를 활용하여 Redis에 대한 CRUD 작업을 수행하는 방법을 설명하겠습니다.1. Docker를 활용하여 Redis 환경 설정Docker를 사용하여 Redis 서버를 설치 및 실행합니다.docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest포트 6379: Redis 서버와의 기본 연결포트 8001: RedisInsight와 같은 GUI 도구와의 연결참고Docker Hub - redis/redis-stack2. 의존성 추가build.gradle 파일에 Redis 및 Jedis와의 연동에 필요한 의존성을 추가합니다. build.gradledependencies { // Redis imple..
-
[Spring Boot] RestClient, HttpInterface를 활용한 HTTP 요청Spring Boot/기타 2024. 11. 17. 00:35
목차 HttpInterface란?Spring 6에서는 HTTP 클라이언트를 사용하기 위한 새로운 방법으로 HttpInterface를 도입하였습니다. 이는 Spring HTTP 인터페이스를 통해 직관적이고 간편한 방법으로 HTTP 요청을 수행할 수 있게 합니다. 기존의 RestTemplate이나 WebClient와 달리, HttpInterface는 인터페이스를 선언하고 이를 구현하는 방식을 사용합니다.HttpInterface는 애노테이션과 프록시(Proxy) 패턴을 활용하여 HTTP 요청을 마치 메서드 호출처럼 사용할 수 있게 해줍니다. 이는 가독성이 좋고 테스트 편리하게 만들어 줍니다. 주요 애노테이션 및 기능HTTP 메서드별 애노테이션@HttpExchange : HTTP 인터페이스와 그 요청에 적용할..
-
[Spring Boot] RestClient를 활용한 HTTP 요청Spring Boot/기타 2024. 11. 10. 21:49
목차 RestClient란?Spring Framework 6.1 M2에서 새롭게 도입된 RestClient는 RestTemplate를 대체하는 동기식 HTTP 클라이언트입니다. 이 클라이언트는 HTTP 라이브러리에 대한 추상화를 제공하여 Java 객체를 HTTP 요청으로 쉽게 변환하고, HTTP 응답에서 객체를 생성할 수 있게 합니다. 또한, 가독성이 높은 API를 통해 간편하고 직관적인 사용성을 제공합니다. 주요 클래스와 메서드RestClient : HTTP 클라이언트를 생성하고 설정합니다.create() : 기본 설정으로 초기화된 새로운 RestClient 인스턴스를 생성합니다.builder() : 사용자 정의 설정을 통해 RestClient를 구성할 수 있는 빌더를 반환합니다.get() : HTTP..
-
[Spring Boot] RestTemplate를 활용한 HTTP 요청Spring Boot/기타 2024. 11. 10. 21:46
목차 RestTemplate란?RestTemplate은 Spring Framework의 HTTP 클라이언트로, RESTful 웹 서비스와 상호작용하여 쉽게 HTTP 요청을 보낼 수 있도록 도와줍니다. 주요 클래스와 메서드RestTemplate : HTTP 클라이언트를 생성하고 설정합니다.getForObject() : GET 요청을 URL에 보내고, 결과를 객체로 반환합니다.getForEntity() : GET 요청을 URL에 보내고, 결과를 ResponseEntity로 반환합니다.postForObject() : POST 요청을 URL에 보내고, 결과를 객체로 반환합니다.postForEntity() : POST 요청을 URL에 보내고, 결과를 ResponseEntity로 반환합니다.put() : PUT 요..
-
[JAVA] Java 11에서 추가된 String 메서드 사용 방법Java/Collection(컬렉션) 2024. 10. 28. 22:50
목차 Java 11에서는 String 클래스에 유용한 메서드가 여러 개 추가되었습니다. 이번 문서에서는 이러한 메서드들이 무엇인지, 각 메서드의 목적과 함께 다양한 사용 예제를 통해 알아보겠습니다. 1. String.isBlank() isBlank() 메서드는 문자열이 빈 문자열이거나 공백 문자(whitespace)로만 구성되어 있는지 확인합니다. 이는 공백 유무를 쉽게 체크할 수 있게 해줍니다. @Test void testIsBlank() { String str = " "; boolean isBlank = str.isBlank(); assertTrue(isBlank, "문자열이 공백입니다"); } 이 예제에서는 공백 문자열 " "를 확인하여 isBlank() 메서드가 true를 반환하는지 테스트합니다...