분류 전체보기 38

스프링부트 async 어노테이션 사용이유

1. 응답성 향상비동기 처리: 비동기 메서드가 호출되면, 해당 작업이 완료될 때까지 기다리지 않고 다음 작업을 계속 진행할 수 있습니다. 이는 사용자 인터페이스(UI)에서의 응답성을 높이고, 사용자 경험을 개선하는 데 도움을 줍니다.2. 자원 효율성스레드 활용: 비동기 처리를 통해 여러 작업을 동시에 처리할 수 있습니다. 이를 통해 CPU 및 메모리 자원을 효율적으로 사용할 수 있으며, 대규모 트래픽을 처리하는 데 유리합니다.3. 긴 작업 처리시간 소모 작업: 데이터베이스 쿼리, 파일 처리, 외부 API 호출 등 시간이 오래 걸리는 작업을 비동기로 처리하면, 메인 스레드가 블로킹되지 않고 다른 요청을 처리할 수 있습니다. 이로 인해 서버의 전체 성능이 향상됩니다.4. 비즈니스 로직 분리코드의 가독성: 비..

카테고리 없음 2024.07.31

클라이언트 요청을 중앙인증서버를 활용하여 인증하는 설정

인증 흐름인증 요청:클라이언트가 /api/** 경로로 요청을 보낼 때, 먼저 중앙 인증 서버에 대한 인증을 수행하도록 설정해야 합니다.인증 성공 시 서비스 요청:인증이 성공하면, 요청을 your-service-url로 전달합니다.예시 구성다음은 인증 서버를 통해 인증을 수행한 후, 실제 서비스로 요청을 전달하는 구성 예시입니다.yamlspring: cloud: gateway: routes: - id: auth_route uri: http://your-auth-server-url # 중앙 인증 서버의 URL predicates: - Path=/api/** # 요청 경로 정의 filters: - StripPrefix=..

카테고리 없음 2024.07.25

스프링 시큐리티 dofilter (필터체인)

filterChain.doFilter(request, response) 호출은 필터 체인에서 다음 필터 또는 최종 리소스(예: 컨트롤러)로 요청을 전달하는 중요한 작업입니다. 이 호출의 필요성과 이유를 설명하겠습니다.doFilter의 필요성필터 체인의 연속성:Spring Security는 여러 개의 필터로 구성된 체인을 사용합니다. 각 필터는 특정 작업을 수행한 후, 다음 필터로 요청을 전달해야 합니다. doFilter를 호출하지 않으면 다음 필터가 실행되지 않으며, 최종 리소스에 도달하지 못합니다.OncePerRequestFilter의 동작:OncePerRequestFilter를 상속받은 필터는 기본적으로 요청당 한 번만 실행되도록 설계되었습니다. 이 경우에도 doFilter가 호출되어야 필터 체인이 ..

카테고리 없음 2024.07.25

중앙 인증 서버의 역할

중앙 인증 서버의 역할JWT 발급:사용자가 로그인하면, 중앙 인증 서버는 사용자 자격 증명을 확인한 후 JWT를 발급합니다. 이 토큰은 사용자의 인증 정보를 담고 있으며, 클라이언트가 요청할 때마다 포함됩니다.리프레시 토큰 발급:로그인 시 JWT와 함께 리프레시 토큰을 발급하여, JWT가 만료되었을 때 새로운 토큰을 요청하는 데 사용됩니다.토큰 검증:클라이언트가 요청 시 JWT를 포함하여 보내면, 중앙 인증 서버는 해당 토큰의 유효성을 검증합니다. 토큰이 유효하지 않으면 접근을 차단합니다.사용자 관리:사용자 등록, 로그인, 로그아웃 등 사용자 관련 작업을 처리합니다. 이 과정에서 비밀번호 암호화와 같은 보안 조치를 포함할 수 있습니다.권한 부여:사용자의 역할이나 권한에 따라 접근 가능한 리소스를 제어합니..

카테고리 없음 2024.07.25

apigateway 사용 인증 과정

1. 로그인 요청:클라이언트가 로그인할 때, 사용자는 자신의 자격 증명(예: 사용자 이름과 비밀번호)을 입력하여 인증 서버에 로그인 요청을 보냅니다.2. 토큰 발급:인증 서버는 클라이언트의 자격 증명을 검증한 후, 유효한 경우 JWT(Json Web Token) 또는 다른 형태의 토큰을 생성하여 클라이언트에게 전달합니다.3. 토큰 저장:클라이언트는 받은 토큰을 로컬 스토리지, 세션 스토리지, 쿠키 등 적절한 저장소에 저장합니다. 이후의 요청에서는 이 토큰을 사용하여 인증을 수행합니다.4. 요청 처리:클라이언트가 보호된 서비스에 접근하려고 할 때, 저장한 토큰을 요청의 Authorization 헤더에 포함시켜 Spring Cloud Gateway에 요청을 보냅니다.Spring Cloud Gateway는 이..

카테고리 없음 2024.07.24

스프링 부트 @async

스프링 부트에서 @Async 애너테이션을 사용하면 비동기적으로 작업을 수행할 수 있으며, 이때 스레드풀에 담긴 스레드의 개수만큼 동시에 작업을 수행할 수 있습니다.스프링 부트의 비동기 처리비동기 작업: @Async 애너테이션을 메서드에 적용하면, 해당 메서드는 비동기적으로 실행됩니다. 즉, 메서드 호출 시 즉시 반환되고, 실제 작업은 별도의 스레드에서 실행됩니다.스레드풀: 비동기 작업은 기본적으로 스레드풀에서 관리되는 스레드를 사용하여 실행됩니다. 스레드풀의 크기는 설정에 따라 다르며, 동시에 실행할 수 있는 최대 작업 수를 결정합니다.동작 방식스레드풀 설정: 스프링 부트에서 비동기 작업을 위해 사용할 스레드풀을 설정할 수 있습니다. 예를 들어, @EnableAsync 애너테이션을 사용하고 Executo..

카테고리 없음 2024.07.24

callable runnable 차이

Callable과 Runnable은 Java에서 스레드를 실행하기 위한 두 가지 인터페이스로, 비슷한 점이 있지만 몇 가지 중요한 차이점이 있습니다. 아래에서 이 두 인터페이스의 차이점을 설명하겠습니다.1. 반환 값Callable:Callable 인터페이스는 call() 메서드를 정의하며, 이 메서드는 결과값을 반환합니다. 즉, 작업이 완료되면 특정 타입의 값을 반환할 수 있습니다.예: T call() throws Exception;Runnable:Runnable 인터페이스는 run() 메서드를 정의하며, 이 메서드는 반환값이 없습니다. 즉, 작업이 완료되면 아무 것도 반환하지 않습니다.예: void run();2. 예외 처리Callable:Callable의 call() 메서드는 체크된 예외를 던질 수 ..

카테고리 없음 2024.07.24

테이블 생성시 orm 사용 유무 차이

JPA를 사용하여 데이터베이스 테이블을 생성할 때, DDL Auto 설정을 create로 설정하면 JPA가 엔티티 클래스를 기반으로 데이터베이스 테이블을 자동으로 생성합니다. 이때 쿼리가 생성되고 실행되는 방식과, JPA를 사용하지 않고 수동으로 스키마를 생성하는 방식의 차이에 대해 설명하겠습니다.1. JPA 사용 시 (DDL Auto = create)자동 테이블 생성: JPA는 엔티티 클래스의 구조를 분석하여 해당하는 SQL CREATE TABLE 쿼리를 자동으로 생성합니다. 이 과정에서 클래스의 필드와 어노테이션을 기반으로 테이블과 컬럼의 매핑을 처리합니다.편리함: 개발자가 직접 SQL 쿼리를 작성할 필요가 없으므로 빠르게 개발할 수 있습니다. 엔티티 클래스 수정 시, JPA가 자동으로 테이블 구조를..

카테고리 없음 2024.07.24

스프링 부트 스레드 풀 사용 예

1. 스프링 부트 프로젝트 설정먼저, 스프링 부트 프로젝트를 생성하고 필요한 의존성을 추가합니다. Maven을 사용하는 경우 pom.xml에 다음과 같은 의존성을 추가합니다:xml org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-aop2. 비동기 작업을 위한 설정@EnableAsync 어노테이션을 사용하여 비동기 처리를 활성화하고, ThreadPoolTaskExecutor를 정의합니다.javaimport org.springframework.context.annotation.B..

카테고리 없음 2024.07.24