Java
-
환경 : Spring Boot 3, HikariCPSpring Boot 에서 DBCP 의 Connection Pool 에서 풀 안의 커넥션이 유효한지에 대한 쿼리문을 날리는데그게 ValidationQuery 이다.해당 쿼리문의 시간을 설정하고 로그로 확인하기 위해 작성하는 글이다. 1. pom.xml 에 log4j2 dependency 추가하기 org.springframework.boot spring-boot-starter-log4j2 2. Spring Boot 기본 logback 제외하기Spring Boot 의 기본 log 라이브러리인 logback 을 제외시킨다. org.springframework.boot spring-boot-starter org.springframewo..
Spring Boot log4j2 설정하기 (Spring Boot3, HikariCP)환경 : Spring Boot 3, HikariCPSpring Boot 에서 DBCP 의 Connection Pool 에서 풀 안의 커넥션이 유효한지에 대한 쿼리문을 날리는데그게 ValidationQuery 이다.해당 쿼리문의 시간을 설정하고 로그로 확인하기 위해 작성하는 글이다. 1. pom.xml 에 log4j2 dependency 추가하기 org.springframework.boot spring-boot-starter-log4j2 2. Spring Boot 기본 logback 제외하기Spring Boot 의 기본 log 라이브러리인 logback 을 제외시킨다. org.springframework.boot spring-boot-starter org.springframewo..
2025.04.30 -
Spring Security 5 에서 6 버전으로 넘어가면서 변경된 SecurityContextPersistenceFilter 와 SecurityContextHolderFilter 를알아보자 SecurityContextPersistenceFilter 인증 처리 과정요청이 들어오면 SecurityContextRepository.loadContext() 를 호출해서 기존 인증 정보를 로딩한다.=> 인증정보가 들어있는 SecurityContext를 가져옴로딩된 SecurityContext를 SecurityContextHolderStrategy.setContext() 로 ThreadLocal 에 저장함=> SecurityContextHolderStrategy 는 실제로 ThreadLocalSecurityCont..
Spring Security 5에서 6로 변경된 필터 확인하기(SecurityContextPersistenceFilter, SecurityContextHolderFilter)Spring Security 5 에서 6 버전으로 넘어가면서 변경된 SecurityContextPersistenceFilter 와 SecurityContextHolderFilter 를알아보자 SecurityContextPersistenceFilter 인증 처리 과정요청이 들어오면 SecurityContextRepository.loadContext() 를 호출해서 기존 인증 정보를 로딩한다.=> 인증정보가 들어있는 SecurityContext를 가져옴로딩된 SecurityContext를 SecurityContextHolderStrategy.setContext() 로 ThreadLocal 에 저장함=> SecurityContextHolderStrategy 는 실제로 ThreadLocalSecurityCont..
2025.04.22 -
Process(프로세스) 란?메모리에 올라가 실행중인 프로그램을 말한다. Thread (쓰레드) 란?프로세스 안에서 실질적으로 작업을 실행하는 단위를 말한다. 예를 들어 생각해보면브라우저에서 음악을 들으면서 동시에 웹서핑을 한다고 치면음악 재생하는 쓰레드웹 페이지 로딩하는 쓰레드다운로드 중인 파일 쓰레드이 모든게 각각 독립된 Thread 에서 실행된다. ThreadLocal 이란?ThreadLocal 은 자바에서 멀티스레딩 프로그래밍을 할 때 사용되는 클래스이다.각 스레드가 독립적으로 값을 가지도록 해주며, 여러 스레드가 동시에 같은 변수를 사용할 때 발생할 수 있는문제를 해결할 수 있다. 일반적으로 멀티스레딩 환경에서는 공유 변수에 대한 동기화가 필요하다.하지만 동기화는 성능에 영향을 미칠 수 있으..
Java ThreadLocal 이란?Process(프로세스) 란?메모리에 올라가 실행중인 프로그램을 말한다. Thread (쓰레드) 란?프로세스 안에서 실질적으로 작업을 실행하는 단위를 말한다. 예를 들어 생각해보면브라우저에서 음악을 들으면서 동시에 웹서핑을 한다고 치면음악 재생하는 쓰레드웹 페이지 로딩하는 쓰레드다운로드 중인 파일 쓰레드이 모든게 각각 독립된 Thread 에서 실행된다. ThreadLocal 이란?ThreadLocal 은 자바에서 멀티스레딩 프로그래밍을 할 때 사용되는 클래스이다.각 스레드가 독립적으로 값을 가지도록 해주며, 여러 스레드가 동시에 같은 변수를 사용할 때 발생할 수 있는문제를 해결할 수 있다. 일반적으로 멀티스레딩 환경에서는 공유 변수에 대한 동기화가 필요하다.하지만 동기화는 성능에 영향을 미칠 수 있으..
2025.04.21 -
Spring Security 6 에서 AuthenticationSuccessHandelr 를 Implements 하고 Extends 하고 있는 SavedRequestAwareAuthenticationSuccessHandler 기본 클래스이다. Spring Security 에서 기본적으로 사용하고 있는 클래스를 사용하면서 로그인 성공 시 간단하게 필요한 URL 로 항상 Redirect 하는 방법을 알아보자. 기본 인증 과정은 아래와 같다.Spring Security 6 이고 기본 FormLogin 설정 Filter 인 UsernamePasswordAuthenticationFilter 클래스를사용하지 않고 Custom Filter 클래스를 만들었다.그리고 실질적인 로그인정보를 비교하는 Authenticati..
Spring Security 6 에서 AuthenticationSuccessHandler redirect Url 설정Spring Security 6 에서 AuthenticationSuccessHandelr 를 Implements 하고 Extends 하고 있는 SavedRequestAwareAuthenticationSuccessHandler 기본 클래스이다. Spring Security 에서 기본적으로 사용하고 있는 클래스를 사용하면서 로그인 성공 시 간단하게 필요한 URL 로 항상 Redirect 하는 방법을 알아보자. 기본 인증 과정은 아래와 같다.Spring Security 6 이고 기본 FormLogin 설정 Filter 인 UsernamePasswordAuthenticationFilter 클래스를사용하지 않고 Custom Filter 클래스를 만들었다.그리고 실질적인 로그인정보를 비교하는 Authenticati..
2025.04.21 -
본인은 Spring 에서 Mybatis 를 사용하기 위해서 Mapper 인터페이스를 생성하고 .xml 파일을 생성하여쿼리문을 호출했다. 이때 필요한 Mapper 인터페이스를 사용하기 위한 Bean 등록 방법을 알아보자 총 3가지가 있다.1. @Mapper 어노테이션 개별 사용2. @MapperScan 어노테이션을 사용한 모든 Mapper 파일 패키지 설정3. xml 을 사용했을 경우 SqlSessionFactoryBean 의 setMapperLocations() 함수 사용 1. @Mapper 어노테이션 사용@Mapper 어노테이션은 각 Mapper 인터페이스에 직접 붙여 Bean 으로 등록한다.모든 Mapper 인터페이스에 붙이기에는 효율성이 떨어지므로 아래 설명할 @MapperScan 어노테이션을 사용..
Mybatis 의 Mapper 인터페이스 Bean 등록 방법본인은 Spring 에서 Mybatis 를 사용하기 위해서 Mapper 인터페이스를 생성하고 .xml 파일을 생성하여쿼리문을 호출했다. 이때 필요한 Mapper 인터페이스를 사용하기 위한 Bean 등록 방법을 알아보자 총 3가지가 있다.1. @Mapper 어노테이션 개별 사용2. @MapperScan 어노테이션을 사용한 모든 Mapper 파일 패키지 설정3. xml 을 사용했을 경우 SqlSessionFactoryBean 의 setMapperLocations() 함수 사용 1. @Mapper 어노테이션 사용@Mapper 어노테이션은 각 Mapper 인터페이스에 직접 붙여 Bean 으로 등록한다.모든 Mapper 인터페이스에 붙이기에는 효율성이 떨어지므로 아래 설명할 @MapperScan 어노테이션을 사용..
2025.04.17 -
@Configuration 클래스에서 @Bean 어노테이션을 사용한 메서드는 다른 Bean 에 의존하여 초기화될 수 있다.쉽게 말해 @Bean 어노테이션이 사용된 메서드의 파라미터에 다른 Bean 을 주입하여 사용할 수 있다. Spring 에서 @Bean 메서드 매개변수를 사용하여 Bean 종속성을 전달할 수 있는 메커니즘으로 인해 가능하다. 1. @Bean 메서드의 반환 타입별 주입주입 대상 지점에 주입할 수 있는 Bean 인스턴스가 하나만 있는 경우 타입별로 성공적 주입된다. 아래는 예시 코드이다.@Beanpublic HikariDataSource dataSource1() { return new HikariDataSource(hikariConfig());}@Beanpublic HikariDat..
@Bean 메서드의 매개변수 종속성 주입@Configuration 클래스에서 @Bean 어노테이션을 사용한 메서드는 다른 Bean 에 의존하여 초기화될 수 있다.쉽게 말해 @Bean 어노테이션이 사용된 메서드의 파라미터에 다른 Bean 을 주입하여 사용할 수 있다. Spring 에서 @Bean 메서드 매개변수를 사용하여 Bean 종속성을 전달할 수 있는 메커니즘으로 인해 가능하다. 1. @Bean 메서드의 반환 타입별 주입주입 대상 지점에 주입할 수 있는 Bean 인스턴스가 하나만 있는 경우 타입별로 성공적 주입된다. 아래는 예시 코드이다.@Beanpublic HikariDataSource dataSource1() { return new HikariDataSource(hikariConfig());}@Beanpublic HikariDat..
2025.04.16