전체 글
-
HttpSessionEventPublisherSpring Security 에서 사용하는 클래스인데, 서블릿 컨테이너에서 발생하는 HttpSession 이벤트를Spring Security 쪽 이벤트로 변환해서 전달해주는 다리 역할을 한다. 즉, 톰캣 같은 WAS 가세션 생성 / 삭제 / ID 변경을 알리면, 그걸 Spring 어플리케이션 컨텍스트가 들을 수 있는 이벤트로 변환하여전달한다. 즉, 쉽게 말하면Tomcat 세션 이벤트 ↓HttpSessionEventPublisher ↓Spring Security 이벤트 왜 필요한가Spring Security 세션 관련 기능, 특히 동시 세션 제어나 세션 만료 감지는 컨테이너의 HttpSessionListener 이벤트만으로는부족하다. HttpSession..
HttpSessionEventPublisherHttpSessionEventPublisherSpring Security 에서 사용하는 클래스인데, 서블릿 컨테이너에서 발생하는 HttpSession 이벤트를Spring Security 쪽 이벤트로 변환해서 전달해주는 다리 역할을 한다. 즉, 톰캣 같은 WAS 가세션 생성 / 삭제 / ID 변경을 알리면, 그걸 Spring 어플리케이션 컨텍스트가 들을 수 있는 이벤트로 변환하여전달한다. 즉, 쉽게 말하면Tomcat 세션 이벤트 ↓HttpSessionEventPublisher ↓Spring Security 이벤트 왜 필요한가Spring Security 세션 관련 기능, 특히 동시 세션 제어나 세션 만료 감지는 컨테이너의 HttpSessionListener 이벤트만으로는부족하다. HttpSession..
2026.05.19 -
ApplicationListener 란?Spring Security 에서 세션(Session) 이 종료되거나 만료될 때 발생하는 이벤트를 감지하는 리스너이다. 보통 아래 상황에서 실행된다. 세션 타임아웃 만료로그아웃세션 강제 제거Cocurrent Session Control 로 인한 세션 종료 SessionDestroyedEventSessionDestroyedEvent 는 단순히 브라우저 탭을 닫는 순간이 아니라, Spring Security 가 관리하는 세션이만료되거나 무효화될 때 발생하는 이벤트입니다. 이 이벤트 안에는 보통 해당 세션에 연결된 SecurityContext 목록이들어있어서, 어떤 사용자의 세션이 끝났는지 확인할 수 있습니다. 보통 같이 필요한 것(HttpSessionEventPubli..
ApplicationListener<SessionDestroyedEvent>ApplicationListener 란?Spring Security 에서 세션(Session) 이 종료되거나 만료될 때 발생하는 이벤트를 감지하는 리스너이다. 보통 아래 상황에서 실행된다. 세션 타임아웃 만료로그아웃세션 강제 제거Cocurrent Session Control 로 인한 세션 종료 SessionDestroyedEventSessionDestroyedEvent 는 단순히 브라우저 탭을 닫는 순간이 아니라, Spring Security 가 관리하는 세션이만료되거나 무효화될 때 발생하는 이벤트입니다. 이 이벤트 안에는 보통 해당 세션에 연결된 SecurityContext 목록이들어있어서, 어떤 사용자의 세션이 끝났는지 확인할 수 있습니다. 보통 같이 필요한 것(HttpSessionEventPubli..
2026.05.19 -
OpenCode 란?터미널이나 IDE 안에서 동작하는 오픈소스 AI 코딩 에이전트이다.사람의 언어인 자연어로 명령을 해서 코드를 생성, 수정, 분석하는 오픈소스 AI 코딩 에이전트이다.단순 자동완성 수준이 아니라 프로젝트 전체를 읽고 코드 수정, 파일생성, 테스트 실행까지 해주는 개발용 AI 도구이다. 핵심기능자연어 기반 코드 작업(생성, 리팩토링, 버그 수정 등)을 터미널 또는 IDE에서 실행할 수 있습니다.여러 LLM(예: OpenAI, Anthropic/Claude, Google Gemini 등)을 API 키로 연결해 사용자가 모델 선택을 유연하게 할 수 있습니다. 아키텍처ㆍ확장성CLI 중심으로 동작하지만 플러그인(또는 하네스)을 통해 서브에이전트 ㆍ도구(브라우저 자동화, Git 연동, 테스트 실행..
OpenCode 란?OpenCode 란?터미널이나 IDE 안에서 동작하는 오픈소스 AI 코딩 에이전트이다.사람의 언어인 자연어로 명령을 해서 코드를 생성, 수정, 분석하는 오픈소스 AI 코딩 에이전트이다.단순 자동완성 수준이 아니라 프로젝트 전체를 읽고 코드 수정, 파일생성, 테스트 실행까지 해주는 개발용 AI 도구이다. 핵심기능자연어 기반 코드 작업(생성, 리팩토링, 버그 수정 등)을 터미널 또는 IDE에서 실행할 수 있습니다.여러 LLM(예: OpenAI, Anthropic/Claude, Google Gemini 등)을 API 키로 연결해 사용자가 모델 선택을 유연하게 할 수 있습니다. 아키텍처ㆍ확장성CLI 중심으로 동작하지만 플러그인(또는 하네스)을 통해 서브에이전트 ㆍ도구(브라우저 자동화, Git 연동, 테스트 실행..
2026.05.15 -
Spring MVC 기본 동작을 갈아엎지 않고 필요한 부분만 커스터마이징하는 인터페이스이다✅ 1. 어디에 쓰는가?Spring Boot 는 기본적으로 내부에서 MVC 설정을 자동으로 해준다WebMvcConfigurer 인터페이스를 구현하면 DispatcherServlet 과 관련된 MVC 설정(인터셉터, CORS, 리소스 핸들링, 뷰 설정 등) 을 Java 기반으로 커스텀할 수 있다여기서 기본 설정은 그대로 두고 필요한 부분만 커스터마이징하기 때문에 전체 설정을 다시 만드는것보다 간편하다@Configurationpublic class WebConfig implements WebMvcConfigurer {}이렇게 설정하게 되면 Spring MVC 설정에 끼어들 수 있다 1️⃣ 정적 리소스 매핑@Overrid..
Spring WebMvcConfigurerSpring MVC 기본 동작을 갈아엎지 않고 필요한 부분만 커스터마이징하는 인터페이스이다✅ 1. 어디에 쓰는가?Spring Boot 는 기본적으로 내부에서 MVC 설정을 자동으로 해준다WebMvcConfigurer 인터페이스를 구현하면 DispatcherServlet 과 관련된 MVC 설정(인터셉터, CORS, 리소스 핸들링, 뷰 설정 등) 을 Java 기반으로 커스텀할 수 있다여기서 기본 설정은 그대로 두고 필요한 부분만 커스터마이징하기 때문에 전체 설정을 다시 만드는것보다 간편하다@Configurationpublic class WebConfig implements WebMvcConfigurer {}이렇게 설정하게 되면 Spring MVC 설정에 끼어들 수 있다 1️⃣ 정적 리소스 매핑@Overrid..
2026.04.23 -
Spring Boot 에서 특정 파일을 /static 리소스 경로에 생성하고 그 파일을 브라우저의 Audio 기능을 통해 음성파일을실행했어야 했는데 파일을 생성한 후 실행하려고 보니까 에러가 났다. 에러의 원인은 파일 리소스를 어플리케이션에서 reload 를 해주기 직전에는 리소스를 인식하지 못하는 이유였다. 해당 원인을 해결하기 위해 특정 파일 경로를 설정하고 특정 요청으로 왔을 때 파일이 있는 실제경로를 매핑하여 실행하면 해결된다. WebMvcConfigurer 설정@Slf4j@Configuration@Profile("!test")public class WebMvcConfig implements WebMvcConfigurer { @Value("${urgent.preview.upload.use}") ..
Spring Boot WebMvcConfigurer addResourceHandlers 설정Spring Boot 에서 특정 파일을 /static 리소스 경로에 생성하고 그 파일을 브라우저의 Audio 기능을 통해 음성파일을실행했어야 했는데 파일을 생성한 후 실행하려고 보니까 에러가 났다. 에러의 원인은 파일 리소스를 어플리케이션에서 reload 를 해주기 직전에는 리소스를 인식하지 못하는 이유였다. 해당 원인을 해결하기 위해 특정 파일 경로를 설정하고 특정 요청으로 왔을 때 파일이 있는 실제경로를 매핑하여 실행하면 해결된다. WebMvcConfigurer 설정@Slf4j@Configuration@Profile("!test")public class WebMvcConfig implements WebMvcConfigurer { @Value("${urgent.preview.upload.use}") ..
2026.04.23 -
에러 내용은 아래와 같다.Modal 창을 제어하다가 Modal 창을 닫을 때 숨겨질 영역안의 버튼이나 input에 포커스가 남아 있으면, 보조기술 입장에서는포커스는 거기에 있는데 그 역역은 숨겨져 있는 모순 상태가 된다. 즉, 본인은 Modal 창을 닫을 때 닫기 버튼에 대한 포커싱이 남아있어서 브라우저 콘솔창에 경고가 찍혔다. 원인은 Bootstrap 의 modal 속성에 aria-hidden="true" 를 적용하자 브라우저가 "포커스된 요소를 숨기면 안된다" 고경고를 띄운것이다.Blocked aria-hidden on an element because its descendant retained focus. The focus must not be hidden from assistive technolo..
Javascript 접근성 경고(focus management)에러 내용은 아래와 같다.Modal 창을 제어하다가 Modal 창을 닫을 때 숨겨질 영역안의 버튼이나 input에 포커스가 남아 있으면, 보조기술 입장에서는포커스는 거기에 있는데 그 역역은 숨겨져 있는 모순 상태가 된다. 즉, 본인은 Modal 창을 닫을 때 닫기 버튼에 대한 포커싱이 남아있어서 브라우저 콘솔창에 경고가 찍혔다. 원인은 Bootstrap 의 modal 속성에 aria-hidden="true" 를 적용하자 브라우저가 "포커스된 요소를 숨기면 안된다" 고경고를 띄운것이다.Blocked aria-hidden on an element because its descendant retained focus. The focus must not be hidden from assistive technolo..
2026.04.17