개발/spring, spring boot
[Kafka] Consumer Group 재연결 시 이전 메시지 무시하는 방법
Kafka Consumer Group을 재연결하면 연결이 끊긴 이후에 쌓였던 메시지도 수신을 하게 됩니다.테스트 코드를 사용할때 이전의 메시지를 무시하고 재연결 이후에 신규로 토픽에 쌓이는 메시지를 수신하기 위해서는 아래와 같이 작성하면 됩니다.auto.offset.reset : latest(default 값) 설정latest 설정일 경우 가장 마지막 offset 부터 수신하게 됩니다. 연결이 끊긴 이후에 재연결되면 offset은 연결이 끊기기전에 마지막으로 읽은 메시지를 가리키기 때문에 재연결되기 전까지의 쌓였던 메시지를 수신하기 때문에 추가로 재연결 시 offset을 강제로 최신 메시지를 가리키게 바꿔줘야 합니다. consumer.subscribe(topicList, new ConsumerRebala..

Spring Security와 Keycloak을 활용한 OAuth2 인증·인가 구현
개념OAuth2 (Open Authorization 2.0) : 사용자 인증, 인가(권한 부여)를 안전하게 처리하는 표준 프로토콜제3자 애플리케이션이 내 계정 정보를 직접 받지 않고, 대신 안전한 Access Token을 사용하도록 하는 방식ex) 네이버 로그인을 이용해 카카오톡에 로그인-> 카카오톡이 네이버 ID/PW를 직접 알 필요 없이 OAuth2를 이용해 로그인할 수 있음-> 네이버가 "사용자에게 Access Token을 발급" 하는 방식 OAuth2 주요 구성 요소Authorization Server : 인증을 처리하고 Access Token을 발급하는 서버Resource Server : 보호된 API를 제공하는 서버Access Token : 사용자가 인증되었음을 증명하는 토큰여기서는 각 요소는..
@Bean 객체 이름 설정
Spring Boot에서 @Bean 어노테이션을 사용해 함수에 빈 객체를 등록할 때, 빈 객체의 이름은 기본적으로 함수의 이름과 동일하게 설정됩니다. 예를 들어 다음과 같이 myService라는 이름의 빈을 정의할 수 있습니다. @Configurationpublic class AppConfig { @Bean public MyService myService() { return new MyService(); }}이 경우, Spring 컨테이너는 myService라는 이름의 빈을 등록합니다. 빈 이름 커스터마이징빈 이름을 함수 이름과 다르게 지정하고 싶다면, @Bean 어노테이션에 name 속성을 사용하여 원하는 이름을 지정할 수 있습니다.@Bean(name = "customSer..

Spring Boot: Configuration Class 오류 해결 방법 - I/O Failure
클래스를 삭제하고 서버를 빌드할때 아래와 같은 에러가 발생하였습니다.org.springframework.beans.factory.BeanDefinitionStoreException: I/O failure while processing configuration class [최상단클래스경로] at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:251) ~[spring-context-6.1.10.jar:6.1.10] at org.springframework.context.annotation.ConfigurationClassParser.parse..