Java
-
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 -
JVM 이란?Java Virtual Machine 으로 Java 와 OS 사이에서 가장 중요한 중간자 역할을 한다.개발자가 작성한 .java 파일을 javac.exe 인 자바 컴파일러가 컴파일하면 (.class) 라는 바이트 코드가 된다.컴파일된 바이트 코드(.class) 를 OS 에 맞게 기계어로 해석해주는 역할을 JVM 이 한다. Method Area(또는 Metaspace)클래스 로딩 시 클래스의 메타데이터 저장static 변수, static final 변수, static 메서드 정보 저장 Heap Area인스턴스 변수(객체) 저장클래스 인스턴스를 생성할 때 new 키워드로 만든 객체를 저장 Stack Area메서드 호출 시 생성되는 지역 변수, 매개변수 등을 저장 💡 각 요소가 어디에 저장되는..
클래스 로더와 클래스, 멤버 변수, static 멤버변수, static Inner 클래스 등 메모리 로딩 및 초기화JVM 이란?Java Virtual Machine 으로 Java 와 OS 사이에서 가장 중요한 중간자 역할을 한다.개발자가 작성한 .java 파일을 javac.exe 인 자바 컴파일러가 컴파일하면 (.class) 라는 바이트 코드가 된다.컴파일된 바이트 코드(.class) 를 OS 에 맞게 기계어로 해석해주는 역할을 JVM 이 한다. Method Area(또는 Metaspace)클래스 로딩 시 클래스의 메타데이터 저장static 변수, static final 변수, static 메서드 정보 저장 Heap Area인스턴스 변수(객체) 저장클래스 인스턴스를 생성할 때 new 키워드로 만든 객체를 저장 Stack Area메서드 호출 시 생성되는 지역 변수, 매개변수 등을 저장 💡 각 요소가 어디에 저장되는..
2025.04.15 -
Java 8 표준 API 의 함수형 인터페이스(Supplier, Consumer)함수형 인터페이스란 1개의 추상 메소드를 갖는 인터페이스를 말한다.Java8 부턴 default 라는 키워드가 생겨 구현되어 있는 메서드가 있으나여러개의 디폴트 메서드가 있더라도 추상 메서드가 오직 한개라면 함수형 인터페이스이다.자바의 람다 표현식은 함수형 인터페이스로만 사용 가능하다. 만들어진 이유자주 사용할 것 같은 람다 함수 형태를 함수형 인터페이스 표준 API 로 미리 만들어제공해주기 위해서 만들어졌다. @FunctionalInterface함수형 인터페이스는 @FunctionalInterface 라는 어노테이션을 사용한다.이 어노테이션은 해당 인터페이스가 함수형 인터페이스 조건에 맞는지 검사해준다.해당 어노테이션은 없..
자바 8 표준 API의 함수형 인터페이스(Supplier, Consumer)Java 8 표준 API 의 함수형 인터페이스(Supplier, Consumer)함수형 인터페이스란 1개의 추상 메소드를 갖는 인터페이스를 말한다.Java8 부턴 default 라는 키워드가 생겨 구현되어 있는 메서드가 있으나여러개의 디폴트 메서드가 있더라도 추상 메서드가 오직 한개라면 함수형 인터페이스이다.자바의 람다 표현식은 함수형 인터페이스로만 사용 가능하다. 만들어진 이유자주 사용할 것 같은 람다 함수 형태를 함수형 인터페이스 표준 API 로 미리 만들어제공해주기 위해서 만들어졌다. @FunctionalInterface함수형 인터페이스는 @FunctionalInterface 라는 어노테이션을 사용한다.이 어노테이션은 해당 인터페이스가 함수형 인터페이스 조건에 맞는지 검사해준다.해당 어노테이션은 없..
2025.01.07