일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- asynccustomautoconfiguration
- kotlin
- traceId
- spring3 spring2 traceid
- micrometer tracing
- java
- elasticsearch
- CompletableFuture
- jpa
- awssecretsmanagerpropertysources
- HashMap
- @FunctionalInterface
- b3-propagation
- java list
- aws secretmanager
- Sleuth
- spring MVC
- Spring JPA
- java.util.list
- map
- spring
- DeferredImportSelector
- list
- Spring Boot
- ResponseBody
- EnableWebMvc
- SpringMVC
- traceasynccustomautoconfiguration
- java lambda
- asyncconfigurer
- Today
- Total
목록분류 전체보기 (69)
du.study기록공간
이번엔 스프링에서 사용하고 있는 Scheduling에 대해서 기록해보려합니다. 현재 저희 프로젝트에서는 일정시간단위로 반복되는 작업 처리 방법 중 하나로 해당 Scheduled를 사용하고 있습니다. 오늘 갑자기 코드를 보면서 해당 @Scheduled 가 어떻게 실행되고 set되는지가 궁금하여 조금 간략하게나마 여기에 기입해보려합니다. 먼저 Spring에서 Scheduling을 사용하려면 @Configuration을 선언한 설정파일과 같이 @EnableScheduling를 선언해야합니다. @Configuration @EnableScheduling public class ScheduleConfiguration implements SchedulingConfigurer { @Override public void..
이번에는 자바 8부터 비동기를 기능을 지원해주는 CompletableFuture에 대해 기록하려합니다. 이 글은 https://www.youtube.com/watch?v=PzxV-bmLSFY&t=8s토비좌 의 강의를 듣고 공부를 위해 작성하고 있습니다. 기존에 자바에서 비동기 작업을 진행한다 하면 별도의 쓰레드풀 생성, Future, FutureTask 을 통한 비동기처리 또는 ThreadPoolTaskExecutor등 다양한 방법이 있긴했습니다. 하지만 8에서 보다 간단하면서 비동기 작업의 결과를 만들어 낼 수 있는 CompletableFuture가 등장했습니다. 특징으로는 1. CompletionStage 을 implement하고있어 비동기 작업을 의존적으로 또다른 기능을 수행할 수 있게 해줍니다. ..
이번에는 Optional 사용법에 대해 기록해보려 합니다. 먼저 Optional은 NULL 처리( 또는 반환값이 없는 ) 에 유용하게 사용되며 이 덕분에 런타임에서 발생되는 NullPointerException를 좀 더 깔끔하도록?(사실 코드 보는사람 케바케인지라.. 만약 자바 개발자가 Optional을 모른다면) 지원해주고 있습니다. 현재 저희 프로젝트에서도 dao 에서 받아온 값을 Optional을 통해 처리하고 있어 이번 기회에 기록해보려 합니다. 테스트는 간단하게 main함수에서 private함수를 호출하는 식으로 테스트 할 예정입니다. 먼저 Optional을 살펴보면 다음과같은 변수를 가지고 있습니다. public final class Optional { private static final O..
현재 서버에서 nginx 를 이용해서 서비스 중인데, 인증서를 변경하고 계속 비밀번호를 입력하는것도 여간일이 아닙니다. 만약 한번 까먹기라도 하면 또 찾아야하는... 이 말도안되는 행동을 하지않기 위해 ssl 설정시 password 자동 설정을 하고 있습니다. server { listen 443; server_name domain~~setting ex) *.du.com; ssl on; ssl_certificate /usr/local/nginx/cert.pem; ssl_certificate_key /usr/local/nginx/key.pem; ssl_password_file /usr/local/ssl.pass; ...... ssl_session_timeout 5m; ssl_protocols TLSv1 TL..
이번에는 간단하게 스프링 부트 웹에서 제공하는 내장 Container를 변경하는법을 기록하려 합니다. 현재 회사에서는 성능 테스트 결과 및 사용 가이드등의 이유로 Undertow 내장 모듈을 사용하여 사용중에 있습니다. 이번에 스프링부트를 사용하는 도중, 기본으로 Tomcat을 사용하고 있어서 찾아보게 되었고 해당 부분을 Undertow로 변경하려 합니다. 우선 spring-boot-starter-web 을 살펴보면 다음과 같은 모듈을 내장하고 있습니다. 스트링 부트 웹모듈을 보면 내부적으로 tomcat을 내장하고 있습니다. 그리고 이로 인하여 Spring.factories 에 있는 EmbeddedWebServerFactoryCustomizerAutoConfiguration 를 호출하게됩니다. 이 속에서..
이번엔 간단하게 SpringBootApplication 에 대하여 정리해보려 합니다. 먼저 Spring boot 프로젝트를 실행하면 다음과 같은 @SpringBootApplication이 생성되며, 내부는 다음과 같습니다. @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoC..
stream을 사용하는 도중 자주 사용하지만 자꾸 까먹어 다시 찾아보는 기능을 기록하려합니다. 우리는 객체를 사용하면서 정렬을 하거나, 정렬을 하고 출력을 하는등에 대한 기능을 사용할 때가 많습니다. 이 기능은 스트림을 사용하면 간단하게 사용할 수 있습니다. 다음은 예제 코드입니다. // Integer List를 reverseOrder한 결과 public static void main(String[] args) { List list = new ArrayList(); list.add(1); list.add(2); list.add(45); list.add(6); list.add(3); list.add(7); list.add(11); list.add(13); list.add(1); list.stream().s..
이번에는 Map의 구현체인 ConcurrentHashMap에 대하여 작성하려합니다. 이전에 작성했던 HashMap을 보면 내부적으로 동기화를 보장해주는 부분은 없습니다. (즉 멀티스레드 환경에서 HashMap은 동기화를 보장해 주지 않는다.) 그렇다면 HashTable은 어떨까? HashTable의 메서드를 간략하게 살펴보면 다음과 같습니다. public synchronized boolean contains(Object value) public synchronized boolean containsKey(Object key) public synchronized V get(Object key) public synchronized V put(K key, V value) public synchronized V ..
프로젝트에서 reousrce로 등록한 데이터를 @value를 통해서 데이터를 받아 사용하고 있습니다. 이 기능 덕분에 각 존별로 다른데이터를 코드의 분기처리없이 사용하고 있습니다. @Configuration public class Config { @Value("${test.value}") private String test; } 여기서 든 첫번째 궁금증.. 1. 어디서 예를 set해주는걸까? 우선 결론부터 작성하면 빈 생성과정에서 AutowiredAnnotationBeanPostProcessor 해당 프로세서를 보는 과정에서 postProcessProperties 메서드의 metadata.inject(bean, beanName, pvs); 호출을 통해 @Value가 inject가 됩니다. 좀 더 과정을 ..
이번에는 Set에 대해 간단히 정리하려 합니다. 먼저 Set의 자료구조를 살펴보면 다음과 같습니다. 1. Set에 들어오는 값(Key)의 중복을 허용하지 않는다. 2. 저장 순서를 유지하지 않는다.(물론 구현체에 따라 순서대로 뽑을 순 있다.) Set을 구현한 구현체는 HashSet, TreeSet, LinkedHashSet, ConcurrentSkipListSet 등 다양하게 있으나 주로 사용하는 자료구조인 HashSet부터 정리해보려 합니다. HashSet 클래스는 해시 알고리즘을 사용하기에 검색속도가 매우 빠르며 (O(1) 또는 거의 근접) 합니다. 또한 해시를 사용하기 위해 내부적으로 HashMap 인스턴스를 이용하여 요소를 저장합니다. HashMap 관련 정리 : https://duooo-sto..