일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Sleuth
- micrometer tracing
- list
- b3-propagation
- traceasynccustomautoconfiguration
- HashMap
- asyncconfigurer
- elasticsearch
- spring3 spring2 traceid
- @FunctionalInterface
- java list
- spring MVC
- DeferredImportSelector
- awssecretsmanagerpropertysources
- traceId
- Spring Boot
- EnableWebMvc
- SpringMVC
- asynccustomautoconfiguration
- kotlin
- ResponseBody
- aws secretmanager
- Spring JPA
- spring
- java.util.list
- map
- java lambda
- jpa
- java
- CompletableFuture
- Today
- Total
목록분류 전체보기 (69)
du.study기록공간
저번 글에서 ResponseBody응답으로 간단한 Spring타입에 대해서 리턴받는 방식을 기록한 적이 있습니다. (해당글은 여기에 :https://duooo-story.tistory.com/9) 이번에는 일반적으로 사용되는 Object를 json형태로 return 받는 방식에 대해서 살펴보려 합니다. @RequestMapping("/jackson") @ResponseBody public TestDomain helloObject() { // 뭔가를 받아와서 도메인을 만들었다 가정하고.. TestDomain tobj = new TestDomain("du",10); return tobj; } 만약 @EnableWebMvc ,WebMvcConfigurer등에대한 기본 설정만 한 상태라면 다음과 같은 에러를 맞..
API를 만들때, Json형태의 응답값을 내려주기 위하여 @ResponseBody 라는 어노테이션을 사용합니다. 이 어노테이션을 사용하면 본문 자체를 응답값으로 내려주기에 유용하게 사용하고 있지만. 정확하게 어떻게 동작하는지를 확인하기 위해서 내부 동작을 확인해보려고 합니다. 그중에서도 현재 RequestMappingHandlerAdapter 를 사용하는 케이스만 구현하고 있어 먼저 이 핸들러 어뎁터 기준으로 디버깅을 하여 확인한 결과를 작성합니다. 결론부터 간략하게 정리해보면 다음과 같습니다. 1. DispatcherServlet에서 핸들러 어뎁터(RequestMappingHandlerAdapter) 실행 2. HandlerMethodReturnValueHandler에서 RequestResponseBo..
최근 알고리즘 문제를 한개씩 풀다보면 풀다보면 자주 최대 힙, 최소 힙을 구현하여 사용해야 되는 경우가 생깁니다. (예를 들면 위상정렬, 최대값 뽑아내기 등) 자바에서는 현재 PriorityQueue를 이용하여 최대 힙, 최소 힙을 간단하게 사용할 수 있도록 제공해주고 있습니다. 다음은 최대 힙, 최소 힙에 대한 간단한 예시입니다. public void init() throws IOException{ PriorityQueue minHeap = new PriorityQueue(); System.out.println("최소 힙"); runHeapTest(minHeap); PriorityQueue maxHeap = new PriorityQueue(Collections.reverseOrder()); System..
이번에는 핸들러 인터셉터에 대해서 기록하려 합니다. Spring에서는 Interceptor라는 기능을 제공하는데, 이 Interceptor를 통해서 dispatcher로 들어온 요청들을 가로챈다음 특정 작업을 진행할 수 있게 도아줍니다. 이를 통해서 요청의 전,후 처리가 가능하며, 필자는 현재 로그인, 각 api별 권한확인 등을 위해서 Interceptor를 사용하고 있습니다. Interceptor 를 사용하려면 Class에 implements HandlerInterceptor 를 지정해준 후, 관련 메서드에 기능을 구현해야 합니다. public class FirstIntercepter implements HandlerInterceptor { @Override public boolean preHandle..
이번에는 @EnableWebMvc에 대해서 기록해 놓으려고 합니다. @EnableWebMvc를 살펴보면 다음과 같이 선언이 되어있습니다. @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Documented @Import(DelegatingWebMvcConfiguration.class) public @interface EnableWebMvc { } @Import(DelegatingWebMvcConfiguration.class)해당 부분을 Import하게 되는데 해당 클레스와 그 속에서 상속하는 WebMvcConfigurationSupport를 보면 MVC에서 필요한 기본적인 세팅을 해주거나, 웹 관련 설정을 커스터마이징 할 수 있도록 기능을 ..
최근 스프링을 사용하면서 web.xml에 설정을 하고 코딩을 하는경우가 아에 없어졌다. 사실 스프링부트가 상용화되는 요즘에 web.xml이 왠말인가... 당장 내가 쓰는 프로젝트의 모든 빈을 web.xml에 등록한다 생각하니 상상만으로 충분히 끔찍하다. 이번엔 web.xml을 사용하지 않고 MVC를 사용하는 케이스를 기록하려 합니다. 먼저 Spring Project 생성을 위하여 Intellij 에서 maven project를 생성 후, spring, servlet등에 대한 정보를 넣어줬습니다. 4.0.0 do.spring testProject 1.0-SNAPSHOT war junit junit 4.11 test javax.servlet javax.servlet-api 4.0.1 provided org...
공부한 내용을 꾸준히 블로그에 쓴다해놓고 어느순간 블로그와 멀어지는것을 느꼈다.. (기록을 안하면 까먹는것을.. 분발하자) 신입으로 입사하고 꾸준히 Spring을 메인 프레임워크로 사용해왔는데, 추가 요구사항에 대한 기능구현에만 바쁘고 사용하는 스프링의 원리조차 제대로 모르고 사용하는것을 느꼈다.... 그래서 이번엔 스프링 MVC의 기초가되는 DispatcherServlet부터 정리해보고자 한다. 당장 Spring MVC의 메인이 뭐냐라고 하면 말할 수 있는건 DispatcherServlet 이라고 말할 수 있을것 같다. 간단하게 설명하면 Front Controller 의 역할을 담당하는 서블릿이다. ( 모든 요청은 Front Controller를 먼저 거치게되며, 이곳에서 요청에 맞는 클레스를 찾고 메..
스프링 MVC의 기초가 되는 서블릿. 솔직히 스프링을 쓰면서 기본이 되는 내용을 거의 모르는것 같아 하나씩 정리해나가고 업데이트 하려합니다. 먼저 간단하게 서블릿을 정리해보면 자바로 웹을 개발하기위해 사용되는 기술로 개발용 스펙과 API를 제공하는 자바로 만든 CGI 프로그램 이라고 볼 수 있습니다. 서블릿은 프로세스의 자원을 공유하며 스레드를 이용하여 작업을 처리하기에 한 개의 요청당 프로세스를 만들고 죽이는 방식의 CGI방식에 비해서 속도가 빠르며, 자바 기반이기에 OS에 독립적으로 돌아간다. 서블릿을 독자적으로 실행되는것이 아니라 서블릿의 개발스팩을 구현해놓은 컨테이너 위에서 돌아가게된다. (Tomcat, undertow 등 (아는게 2개...제티도 확인해봐야겠다.) ) 컨네이너는 기본적으로 서블릿..
친구에게 갑자기 이 질문을 받게 되었다. Integer a1 = 127; Integer a2 = 127; a1 == a2 는 true일까? Integer b1 = 128; Integer b2 = 128; b1 == b2 는 true일까? 오브젝트 비교는 알겠는데.. 진짜 같은가에 대해선 대답을 못해서 우선 코드를 돌려보았다. class Test { public static void main(String[] args) { Integer a1 = 127; Integer a2 = 127; System.out.println(a1 == a2); // true Integer b1 = 128; Integer b2 = 128; System.out.println(b1 == b2); // false } } 결과가 왜이러는..