반응형

Java 44

[Spring Boot] Spring Batch + scheduler 사용해 일정 주기로 실행 방법

Spring Batch란? 대용량 일괄처리의 편의를 위해 설계된 가볍고 포괄적인 배치 프레임워크다. 1. Gradle에 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-batch' implementation 'org.springframework.boot:spring-boot-starter-quartz' testImplementation 'org.springframework.batch:spring-batch-test' 2. BatchConfig.java 생성 @Slf4j @Configuration @EnableBatchProcessing public class BatchConfig { @Autowired public JobBuilde..

Java 2023.03.24

[Spring Boot / Java8] OpenAI API GPT3 사용 방법

1. OpenAI Key 발급 로그인 => 좌측 상단 [Personal] 클릭 => [View API keys] 클릭 https://platform.openai.com/overview OpenAI API An API for accessing new AI models developed by OpenAI platform.openai.com API Key는 최초 발급받을 때 한 번만 확인할 수 있다. 2. OpenAI Sevice 생성 @Slf4j @Service public class OpenAIService { private static final String API_ENDPOINT = "https://api.openai.com/v1/"; @Value("${OPEN_AI_KEY}") private Stri..

Java 2023.03.23

[Spring Boot] Security @AuthenticationPricipal 객체로 로그인 정보 받는 방법

@AuthenticationPricipal를 사용해 로그인한 사용자 정보를 받아올 수 있다. 하지만, @AuthenticationPricipal 타입은 UserDetails이기 때문에 커스텀을 해줘야 한다. 1. 기존 Security + JWT 설정 방법 2022.10.25 - [Java] - [Spring Boot] Spring Security JWT를 사용한 토큰 인증 구현 2. UserDetails을 커스텀한 클래스를 작성한다. @Builder @Data @NoArgsConstructor @AllArgsConstructor public class CustomUserDetails implements UserDetails { private String username; private String pas..

Java 2023.03.21

[Spring Boot] Spring Data JPA에서 Pageable사용한 Pagination 및 정렬 처리 방법

Pageable이란? 게시판에서 글을 한 번에 보여주지 않고 페이지를 나눠 보여준다. 정렬 방식, 페이지 번호, 페이지 크기 등 요청에 따라 정보를 전달해 주는 JPA에서 제공해 주는 객체이다. 사용 방법 1-1) Repository @Repository public interface BoardRepository extends JpaRepository { @Query(value = "select id, user_id, title, content, img, likes, hits\n" + "\t\t, (select COUNT(*) from comment where board_id = id) as comments, reg_time \n" + "from board \n" + "where title like %?..

Java 2023.03.06

[Spring Boot] RestTemplate/WebClient 사용한 REST API 호출 방법

RestTemplate RestTemplate이란? Spring 3.0부터 지원하는 객체로 간편하게 REST 방식 API를 호출할 수 있는 Spring 내장 클래스입니다. (동기 방식) HTTP 프로토콜의 메서드 (GET, POST, DELETE, PUT)에 맞게 여러 메서드를 제공한다. WebClient WebClient이란? Spring 5.0부터 지원하는 객체로 RestTemplate가 동기 방식이라면 WebClient는 비동기 방식의 REST API 호출할 수 있다. 1. RestTemplate 특징 Spring 3.0부터 지원하는 HTTP 통신 템플릿 응답으로 JSON, XML, String을 받을 수 있다. Blocking I/O 기반의 동기방식을 사용 RESTful 형식에 맞추어져 있다. H..

Java 2023.02.11

[Spring Boot] CORS 설정 방법

CORS CORS(Cross-Origin Resource Sharing) 란? 서로 다른 출처의 자원을 공유할 수 있도록 설정하는 권한 체제를 말한다. 따라서 CORS를 설정해주지 않거나 제대로 설정하지 않은 경우, 원하는 대로 리소스를 공유하지 못하게 된다. 출처(Origin) 란? URL 구조에서 Protocal, Host, Port를 합친 것을 말한다. 셋중 하나라도 다르면 다른 출처로 분류된다. 백엔드 서버가 실행되는 중이면 콘솔 창에서 해당 오류가 나타난다. 이는 보안을 위한 CORS 헤더 Policy를 위반했기 때문이다. 처음 리소스를 제공한 출처가(Origin)이 현재 요청하려는 도메인(Origin)과 다르더라도 요청을 허락해 주는 웹 보안 방침이다. 1. 설정 방법(모든 Controller..

Java 2022.10.27

[Spring Boot] Spring Security 패스워드 암호화 방법

Spring Cecurity Spring Security 란? 간단히 말하면 Spring의 보안(인증과 권한, 인가 등)을 담당하는 서블릿 필터의 집합이다. 서블릿 필터는 서블릿 실행 전에 실행되는 클래스들로 토큰 인증을 위해 컨트롤러 메서드의 첫 부분마다 인증 코드를 작성하는 고민을 해결하기 위해 서블릿 필터를 사용한다. 1. Spring Security 라이브러리 설치 implementation 'org.springframework.boot:spring-boot-starter-security' 2. 패스워드 암호화 사용 방법 * Source Code * https://github.com/kangilbin/TodoList/blob/master/src/main/java/com/example/demo/co..

Java 2022.10.26

[Spring Boot] Spring Security JWT를 사용한 토큰 인증 구현

Spring Cecurity Spring Security 란? 간단히 말하면 Spring의 보안(인증과 권한, 인가 등)을 담당하는 서블릿 필터의 집합이다. 서블릿 필터는 서블릿 실행 전에 실행되는 클래스들로 토큰 인증을 위해 컨트롤러 메서드의 첫 부분마다 인증 코드를 작성하는 고민을 해결하기 위해 서블릿 필터를 사용한다. JWT(JSON Web Token) 란? 2022.10.24 - [Java] - JWT(JSON Web Token) 개념 및 구조 * 전체 Source Code * https://github.com/kangilbin/TodoList 1. JWT 토큰 발행 방법 토큰 발행 > 로그인 시 토큰 반환 > 토큰을 이용해 API 인증 1-1) 토큰 생성을 위한 JWT 라이브러리 추가하기 htt..

Java 2022.10.25

JWT(JSON Web Token) 개념 및 구조

JWT JWT 란? 서버에서 전자 서명된 토큰을 이용하면 인증에 따른 스케일 문제를 해결할 수 있다. 전자 서명 토큰 중 하나가 JWT(JSON Web Token)이다. 기존 토큰 기반 인증과 차이점은 서버가 헤더와 페이로드를 생성한 후 전자 서명을 한다는 점이다. JSON 형태의 토큰으로 {header}.{payload}.{signature}로 구성되어있고, 토큰 기반 인증이므로 서버가 생성한다. 1. JWT 장점 사용자 인증에 필요한 모든 정보는 토큰 자체에 포함하기 때문에 별도의 인증 저장소가 필요 없고, MSA 환경에서 인증 서버와 데이터베이스에 의존하지 않는 쉬운 인증 및 인가 방법을 제공한다. MSA(micro service architecture) 란? 소프트웨어가 잘 정의된 API를 통해 ..

Java 2022.10.24

[Spring Boot] Rest API 개념 및 작성 방법

REST API REST(Representational State Transfer) 란? HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다. REST API 란? 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다. 크게 URL, HTTP 메서드, 요청 매개변수 또는 요청 바디로 구분된다. 1. URL 맵핑 import org.springframework.web.bind.annotation.GetMapping; import org.springframework..

Java 2022.10.10
반응형