공부

    [Spring Batch] Spring Batch 기본 개념 및 용어 정리

    [Spring Batch] Spring Batch 기본 개념 및 용어 정리

    Batch 란 Batch는 일괄처리란 뜻을 가지고 있다. 사용자와 상호작용 없이 여러 개의 작업을 미리 정해진 순서에 따라 중단없이 처리한다. 배치를 사용하기 위해서는 다음과 같은 조건이 만족해야한다. 대용량 데이터 : 대용량의 데이터를 가져오기, 전달하기, 계산하기 등의 처리 자동화 : 사용자 개입없이 자동으로 실행 견고성 : 잘못된 데이터를 충돌/중단 없이 처리하기 신뢰성 : 잘못된 내용을 추적 가능해야함 (로깅, 알림) 성능 : 지정한 시간 안에 처리를 완료하거나 동시에 실행되는 다른 어플리케이션과 방해되지 않게 처리 배치 타입 Spring Batch 용어 Job Job은 배치처리 과정을 하나의 단위로 만들어 놓은 객체입니다. 또한 배치처리 과정에 있어 전체 계층 최상단에 위치하고 있습니다. Job..

    [Spring Batch] @JobScope 와 @StepScope 개념 및 예제

    @JobScope 와 @StepScope @JobScope 와 @StepScope는 스프링의 기본 Scope 인 싱글톤과 대치되는 역할이다. @JobScope 와 @StepScope이 선언되면 Bean의 생성 시점이 애프리케이션이 구동되는 시점이 아닌 Bean의 실행 시점에서 이루어진다. @JobScope, @StepScope이 명시된 메서드가 실행될 때까지 지연시키는 것을 의미한다. 이러한 행위는 Late Binding 이라고 한다. Scope 란 스프링 컨테이너에서 빈이 관리되는 범위를 뜻한다. @JobScope Step 선언시에 사용한다. @Value : JobParameter, jobExecutionContext만 사용이 가능하다. @StepScope Tasklet 이나 ItemReader, It..

    [Spring] Could not resolve placeholder 'datasource.host' in value

    [Spring] Could not resolve placeholder 'datasource.host' in value

    프로젝트를 새로 만들면서 프로젝트 실행을 위해 빌드했는데 Could not resolve placeholder 'datasource.host' in value 해당 오류가 나면서 빌드 에러가 났다. 해결 방법은 생각보다 간단하다. Edit Configuration > Environment variables 에 SPRING_PROFILES_ACTIVE 값을 추가 시켜 주면 된다. application.yaml spring: devtools: livereload: enabled: true restart: enabled: false config: activate: on-profile: local

    Docker를 사용해 mysql 설치하고 원격접속하기

    Docker를 사용해 mysql 설치하고 원격접속하기

    docker 컨테이너 생성하기 docker run -it -d --name mysql -e MYSQL_ROOT_PASSWORD={비밀번호 입력} -p 3306:3306 mysql:{tags} docker 리스트 출력해서 Mysql 설치 되었는지 확인하기 docker 컨텍스트 안에 접속 docker exec -it mysql bash 원격 접속 허용하기 grant all privileges on *.* to 'root'@'%'; root 에 다른 user 이름을 넣고 허용해도 된다. DBeaver 로 접속하기 DBeaver로 데이터베이스 연결할 때 Driver properties에서 다음 옵션의 내용을 변경해주어야 한다. autoReconnect=true useSSL=false allowPublicKeyR..

    [자료구조] B-Tree, B+Tree

    [자료구조] B-Tree, B+Tree

    B-Tree, B+Tree는 학부때 공부하면서 배우지만 내용을 다시 정리하는 이유는 InnoDB 의 엔진이 B+Tree로 이루어져 있고 B+Tree는 B-Tree 의 확장된 개념으로 InnoDB에 대해 공부할 겸 두개의 내용에 대해서 정리하고자 한다. B-Tree B트리라고 부르고, 트리 자료 구조의 일종으로 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조이다. B-Tree는 자료를 정렬된 상태로 유지되어 있는것이 특징이다. key값을 이용해 찾고자 하는 데이터를 트리 구조를 이용해 찾는 것이다. B-Tree의 장점으로는 어떤 값에 대해서도 같은 시간에 결과를 얻을 수 있다.(균일성) 사각형으로 표시된 한개 한개를 '노드(Node)' 라고 한다. 가장 상단의..

    [Spring] Swagger Error - Failed to load API definition.

    [Spring] Swagger Error - Failed to load API definition.

    Failed to load API definition. Fetch error undefined http://localhost:8080/v3/api-docs Spring 에서 Swagger3을 사용하고 있는데 해당 오류가 발생했다. 해결 방법 (1) Spring Security도 사용하고 있어서 permitAll()을 사용했다. ... .antMatchers("/swagger-ui/**", "/v3/api-docs/").permitAll(); 해결 방법 (2) permitAll을 사용해도 안된다면 @ApiImplicitParam 이라는 어노테이션을 사용하고 있을때 @RequestBody와 요구되는 Param이 일치하지 않아서 생기는 오류일 수 있어서 해당 부분도 확인해보면 좋다.

    [JPA] Swagger Error - [Request processing failed; nested exception is java.lang.NullPointerException] with root cause

    Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause 이유 NullPointerException이 발생한 이유는 Query 조건 중에 Null이 들어갔기 때문이다. 해결방법 쿼리에 Null이 안들어가도록 수정해주면 된다.

    [Spring] Spring HATEOAS란

    [Spring] Spring HATEOAS란

    HATEOAS란 Hypermedia As The Engine Of Application State 약자로 REST API의 필수 구성요소 중 하나이다. Spring HATEOAS 는 스프링 프로젝트중에 하나인데 이 프로젝트의 목적은 REST API를 보다 쉽고 편리하게 사용할 수 있게 일종의 툴을 제공해주는 프레임워크이다. REST API를 사용하는 클라이언트가 전적으로 서버와 동적인 상호작용이 가능하도록 하는것을 의미하는데 이러한 방법은 특정 API 요청 시 어떠한 행동을 할 수 있는지 URL을 전달하여 클라이언트가 참고해 사용할 수 있고 리소스 정보 뿐만 아니라 리소스 상태에 따라 다양한 링크 정보가 바뀌며 동적으로 리소스를 구성한다. 즉, 높은 수준에서 클라이언트와 서버를 분리시키고, 의존성을 줄여..

    [JPA] List to Page - List를 Page로 변환해서 사용하기

    JPA 에서 제공하는 Page를 사용하고 싶은데 데이터를 가공해서 사용하다 보니 List 로 결과가 나오고 있어서 List를 Page로 변환해서 사용하고자 한다. 아래 코드를 참고해서 List 를 Page로 변환해서 사용하면 된다. 방법1 Page pageResult = (Page) PageUtils.makePageResponse(list, pageable); 페이징 처리를 위한 공통 코드 public static Page makePageResponse(List list, Pageable paging, int totalCount) { try { return (new PageImpl(list, paging, totalCount)); } catch (Exception e) { return (new PageI..

    [CKA] Udemy - Mock Exam3 문제풀이

    [CKA] Udemy - Mock Exam3 문제풀이

    Q1.Create a new service account with the name pvviewer. Grant this Service account access to list all PersistentVolumes in the cluster by creating an appropriate cluster role called pvviewer-role and ClusterRoleBinding called pvviewer-role-binding. Next, create a pod called pvviewer with the image: redis and serviceAccount: pvviewer in the default namespace. ServiceAccount: pvviewer ClusterRole:..