Pojo Java Application 개발시 program argument를 받는 경우, "String[] args" 형태로 받기 때문에 argument가 여러개인 경우 변환하는 코드가 많아지고, 복잡해진다. "Jcommander Parameter"는 argument를 Annotation (@Parameter)로 설정할 수 있어, 가독성과 사용성이 월등히 좋아진다. 사용법을 간단히 소개한다. 1. Argument Class에 @Parameter Annotation으로 조건을 설정한다. import com.beust.jcommander.Parameter; import lombok.Getter; import java.time.LocalDateTime; // * Sample Argument : -profil..
외부에 있는 property를 읽어와서 적용해야하는 상황이 있다. 직접 파일로 읽어와도 좋고 Typesafe에서 제공하는 Config 같은 라이브러리를 사용해도 좋다. 심플하게 property를 읽어올 수 있는 Typesafe Config의 사용 방법을 간략히 소개한다. resource 로 지정된 디렉토리 하위의 property, conf 파일을 읽어온다. property file path/name을 지정하지 않으면 위에서 아래로 이름의 우선순위를 가진다. ConfigFactory.load(); // first-listed are higher priority 1. application.conf (all resources on classpath with this name) 2. application.jso..
Template Engine에서 value path대신 JsonPath의 path를 사용하면 동적으로 Json을 내가 지정한 Template로 변환시킬 수 있다. PebbleEngine pebbleEngine = new PebbleEngine.Builder() .loader(new StringLoader()) .build(); //member source json //{ // "id":1234, // "name":"jack", // "age":20, // "address": { // "address1":"kor", // "address2":"seoul", // "address3":"gangnam" // }, // "phoneNumber":"010-1234-1234", // "email":"abcd@goo..
JsonPath Json String을 Object로 변환하지 않고도 연산자, 함수, 표현식 등의 기능을 수행할 수 있다. JsonPath Online Evaluator Dependency 표현식 dot 표현식 $.store.book[0].title bracket 표현식 $[’store’][‘book’][0][’title’] 연산자 연산자 설명 $ 루트 노드. 모든 Path 표현식은 이 기호로 시작. @ 처리되고 있는 현재 노드. 필터 조건자(expression)에서 사용. * 와일드카드. 모든 요소와 매칭. . Dot 표현식의 자식노드. [start:end] 배열 slice 연산자. [?()] 필터 표현식. 필터 조건자가 참인 경우에 매칭되는 모든 요소를 처리. 함수 min(), max(), avg()..
Dependency https://mvnrepository.com/artifact/org.mapstruct/mapstruct-jdk8/1.3.1.Final https://mvnrepository.com/artifact/org.mapstruct/mapstruct-processor 기능 Entity와 DTO, VO의 객체를 Convert 해주는 Mapper를 생성한다. 설정 - build.gradle plugins { ... id 'net.ltgt.apt' version '0.20' } allprojects { ... apply plugin: 'net.ltgt.apt-idea' apply plugin: 'net.ltgt.apt-eclipse' } subprojects { ... dependencies { ...
AsyncEventBus // AsyncEventBus Configuration import com.google.common.eventbus.AsyncEventBus; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Executor; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; private static final int CORE_POOL_SIZE = 80; private static final int MAX_POOL_SIZE = 100; private static final int KEEP_ALIVE_TIME..
Guava- 구글이 개발한 자바 오픈소스 유틸리티 라이브러리.CacheCollectionFunctionalStringOthers 1. Local Cachesample codeprivate LoadingCache sampleCache = CacheBuilder.newBuilder().maximumSize(100000).expireAfterWrite(1, TimeUnit.MINUTES).build(new CacheLoader() {@Overridepublic String load(Long targetId) {return targetRepository.findById(targetId);}}); public void refresh(Long id) {sampleCache.refresh(targetId)} publ..
Flyway- Flyway 명령어만 실행하면 설정한 DB 테이블이 초기화 , 생성되므로 협업시 발생할 수 있는 테이블 동기화 문제를 피할 수 있다. 1. Build Gradle 설정buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "gradle.plugin.com.boxfuse.client:flyway-release:4.0.3" }} subprojects { apply plugin: 'org.flywaydb.flyway' flyway {url = "jdbc:mysql://127.0.0.1:3306?useSSL=false"schemas = ['dbSchema']driver ..
CloseableHttpClient를 생성할때 생성하려면 아래와 같이 기본 설정으로 생성할 수 있다. - CloseableHttpClient httpClient = HttpClientBuilder.create().build(); 기본 설정으로 HttpClient를 생성할 경우, 기본값이 아래와 같기 때문에 performance가 않나올 수 있다. - this.pool = new CPool(new InternalConnectionFactory(this.configData, connFactory), 2, 20, timeToLive, tunit); 때문에 아래 예제 코드와 같이 사용자가 설정을 직접 정의하여 HttpClient를 생성하는것도 고려해야 한다. import lombok.extern.slf4j.Sl..
- Total
- Today
- Yesterday
- Mapping
- RetryTemplate
- Embedded Mapping
- Criteria
- Sprint RetryTemplate
- Property
- Query DSL
- Spring
- Join Table
- @Primary
- Registrar
- Charles proxy
- spring spel
- Typesafe Config
- guava
- java generic
- scikit-learn
- java Equals
- DI
- Akka
- JPA Criteria
- java EqualsAndHashCode
- Discriminate Mapping
- Spring JDBC Template
- Embeddable Mapping
- Spring Registrar
- JPA
- docker
- SmartLifecycle
- 복합키 Mapping
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |