일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- AWS
- 맛집
- elasticsearch
- IntelliJ
- javascript
- springboot
- redis
- php
- devops
- Oracle
- Spring
- ReactJS
- jenkins
- tool
- db
- Gradle
- 요리
- MySQL
- java
- JVM
- Spring Boot
- it
- ubuntu
- linux
- Design Patterns
- Spring Batch
- laravel
- Web Server
- Git
- jsp
- Today
- Total
목록Java & Kotlin (250)
아무거나
SpEL(Spring Expression Language) 정의 런타임시 객체 그래프를 조회하고 조작하는 강력한 표현언어이다. EL(Unified EL) 과 비슷하지만 추가적인 기능을 제공 OGNL, MVEL, JBOss EL 등 자바에서 사용할 수 있는 여러 EL이 있지만 SpEL은 모든 스프링 프로젝트 전반에 걸쳐서 사용 가능 스프링 3.0부터 지원 가능 기능 리터럴 표현식 (Literal Expression) Boolean 및 관계 연산자 (Boolean and Relational Operator) 정규식 (Regular Expression) 클래스 표현식 (Class Expression) 속성, 배열, 목록, 맵 액세스 (Accessing Properties, arrays, lists, maps)..
Spring Batch Job Flow 이전글: https://bkjeon1614.tistory.com/739 작업코드: 작업코드 실제 비지니스 로직을 처리하는 기능은 Step 에 구현되어 있다. 즉, Batch 로 실제 처리하고자 하는 기능과 설정을 모두 포함한다. Job 내부의 Step 들 간에 순서 또는 처리 프로세스를 제어하기 위해 여러 Step 들이 어떻게 관리해야 하는지 차근차근 알아보자. Next next() 는 순차적으로 Step 들을 연결시킬 때 사용 즉, step1 -> step2 -> ... 와 같이 하나씩 실행할 때 사용하면 좋다. 샘플코드를 작성해보자. [NextJobConfiguration.java] package com.example.job; import org.springfr..
Spring Batch Meta Table 이전글: https://bkjeon1614.tistory.com/738 작업코드: 작업코드 [Spring Batch] 2편 - Spring Batch 활용 Spring Batch 활용 이전글: https://bkjeon1614.tistory.com/737 Spring Batch 프로젝트 생성 프로젝트 환경 IntelliJ IDEA 2022. 1 Spring Boot 2.7.3 Java 11 Gradle 프로젝트 생성 프로젝트 유형 설정 프로젝트.. bkjeon1614.tistory.com 하기 이미지는 Spring Batch 를 사용하기 위해 필요한 메타 테이블이며 이것들이 각각 어떤 데이터를 저장하는지에 대해 알아보자. BATCH_JOB_INSTANCE 먼저 ..
Spring Batch 활용 이전글: https://bkjeon1614.tistory.com/737 작업코드: 작업코드 Spring Batch 프로젝트 생성 프로젝트 환경 IntelliJ IDEA 2022. 1 Spring Boot 2.7.3 Java 11 Gradle 프로젝트 생성 프로젝트 유형 설정 프로젝트 관련 설정 생성된 build.gradle 확인 [build.gradle] plugins { id 'org.springframework.boot' version '2.7.3' id 'io.spring.dependency-management' version '1.0.13.RELEASE' id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sou..
Spring Batch 란? Spring Batch 를 사용하면서 내부적으로 어떻게 동작하는지 어떤 특징이 있는지 등에 대해서 한 번 정리가 다시할 필요성을 느껴서 해당 포스팅을 작성하게 되었다. Batch? 정의 개발자가 정의한 작업을 한번에 일괄 처리하는 애플리케이션이며 즉, 데이터를 실시간으로 처리하는게 아니라, 일괄적으로 모아서 처리하는 작업을 의미한다. (Ex: 하루동안 쌓인 데이터를 배치작업을 통해 특정 시간에 한꺼번에 처리하는 경우) 예시 상품 키워드 검색 수에 대한 일/주/월 키워드 검색순위 데이터 집계 매출 데이터를 사용한 일매출 데이터 집계 (실시간 집계 쿼리로 해결하면 조회 시간이나 서버 부하가 많으므로 매일 새벽 전날에 매출 집계 데이터를 미리 생성) 내부 및 외부 시스템에서 우리에..
POJO (=Plain Old Java Object) POJO 란 마틴파울러가 만들어낸 용어이며 당시 인기를 끌고있던 EJB처럼 복잡하고 제한이 많은 기술을 사용하는 것보다는 자바의 단순한 오브젝트를 이용해 애플리케이션의 비즈니스 로직을 구현하는 편이 낫다고 생각하여 만듬 또한 단순히 "간단한 자바오브젝트를 사용" 한다는 말보다는 "POJO 방식의 기술을 사용" 한다는 말이 첨단기술을 쓰는 것처럼 느껴진다는 심리도 이용함 POJO 의 조건 특정 규약에 종속되지 않는다 자바 언어와 꼭 필요한 API 외에는 종속되지 않아야 한다. (EJB2, 스트럿츠1 과 같이 특정 규약을 따라 비즈니스 컴포넌트를 만들어야 하는 경우는 POJO가 아님) 특정 환경에 종속되지 않는다 특정 환경에 종속되게 만들면 안되고 환경에..
Java Stream 이란 개념은 알고 있지만 한 번 정리가 필요할 것 같아서 해당 포스팅을 작성하게 되었다. Stream 우리는 수 많은 데이터를 다룰 때, 컬렉션이나 배열에 데이터를 담고 원하는 결과를 얻기위해 for 문이나 Iterator 를 이용하여 코드를 작성해왔다. 그러나 이러한 코드는 가독성과 재사용성이 떨어진다. 또한 Collection 이나 Iterator 와 같은 인터페이스를 활용하여 컬렉션을 다루는 방식을 표준화하기는 하였지만. 각 컬렉션 클래스에는 같은 기능의 메서드들이 중복해서 정의되어 있다. 예를 들면 List 를 정렬하려면 Collections.sort() 를 사용하거나 배열은 Array.sort() 를 사용해야 한다. 이러한 문제점들을 해결하기 위해서 Java8 부터 추가된것..
Spring Boot Graceful Shutdown 애플리케이션을 배포(ex: Rolling Deploy) 또는 특정 케이스로 종료할 때 여러가지 방법이 존재한다. 다만 케이스별로 정상적은 종료를 위하여 반드시 정상 종료 프로세스는 꼭 필수이다. 그러므로 애플리케이션을 정상적으로 종료할 수 있게 도와주는 Graceful Shutdown 에 대하여 알아보자. 리눅스 KILL 명령 리눅스 환경에서 프로세스를 종료할 때 KILL 을 사용하고 옵션에 따라 종료시키는 보편적으로 사용하는 동작은 아래와 같다. -9: 작업중인 모든 데이터를 저장하지 않고 프로세스를 종료하기 때문에 저장되지 않는 데이터는 소멸된다. (강제종료) -15: 하던 작업을 모두 안전하게 저장한 후 프로세스를 종료한다. (정상종료) Grac..
Exception 을 개선하다가 예전에 포스팅을 작성해야지 하면서 깜박했던 부분이 있어 다시 작성하게되었다. @ControllerAdvice 를 통한 Global Exception Handler 처리 에러 객체 생성 [ErrorResponse.java] import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import org.springframework.validation.BindingResult; import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; import com.example.bkjeon.enum..
최근에 JVM 관련 대화를 나누던 도중 메모리 영역에 대한 잘못된 설명을 해버린적이 있다. 반성하는겸 다시 정리하고자 해당 포스팅을 작성하게 된다. Java 메모리(with. JVM) 정의 Stack: 정적 할당된 메모리 영역 boolean, char, short, int, long, float, double.. 등과 같은 데이터 즉, 원시타입의 데이터가 값이랑 같이 Stack 에 할당된다. Heap 영역에서 Object 타입 데이터의 참조값이 Stack 에 할당된다. Stack 의 메모리는 Thread 당 하나씩만 할당된다. 즉, 새로운 Thread 생성시 그 해당 Thread 에 대한 Stack 이 또 새롭게 생성된며 각 Thread 끼리는 Stack 영역을 접근 할 수 없다. 간단한 사용예시 pub..