본문 바로가기

분류 전체보기

(212)
[reference] Spring Framework Core - Container 스프링 프레임워크의 레퍼런스를 읽어보는 시간을 가져보자 1. The IoC Container 스프링프레임워크가 구현한 IOC 의 원칙을 알아보자 IOC 는 DI (의존성 주입) 이라고도 한다. dependency 를 가지는 객체는 오직 factory method 로 부터 주입이 된다. 그러면 IOC 컨테이너는 빈을 생성하는 시점에 그들의 종속성을 주입시키게 된다. 근본적으로 Service Locator 패턴과 같다고 한다. beans 와 context 패키지는 스프링 IOC 컨테이너의 기본이다. BeanFactory 인터페이스는 모든 타입의 Object 를 관리할 수 있는 고급 구성 메카니즘을 가지고 있다. ApplicationContext 인터페이스는 BeanFactory 의 sub-interface ..
MSA 아키텍처 기본 개념 이번엔 MSA 아키텍처로 토이 프로젝트를 만들어 보기 전에 MSA 아키텍처가 뭔지 개념을 알고 가도록 해보자 1. MSA 란? In short, the microservice architectural style [1] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by ful..
Spring Boot - Reference 스프링을 쉽게 만들수 있도록 해주는 스프링 부트 라이브러리등 어느정도 틀을 잡아놓은 스프링 이라고 할 수 있다. java -jar 를 이용해 쉽게 실행 할 수 있다. war 파일로도 물론 배포 할 수 있다. 스프링 부트 설치 방법 아무런 IDE 에서 의존성을 추가하면 사용 할 수 있다. Maven 이나 Gradle 을 이용해서 설치하는 것 을 권장한다. parent 를 사용을 하면 해당 프로젝트를 상속 받는 프로젝트에서는 dependency 에서 version 을 명시하지 않아도 된다. pom.xml 에 레퍼런스에 있는 pom.xml 을 복붙하면 된다. @EnableAutoConfiguration 스프링 부트가 제공하는 어노테이션이다. 스프링 부트가 제공하는 기본 설정을 쓰라는 어노테이션이다. Start..
LeetCode - April 30-Day LeetCoding Challenge - Week 1 오랜만에 알고리즘을 공부 감을 찾기 위해 Leet Code 30 챌린지 문제들을 풀어보고 복기 해보자 - Maximum Subarray 문제 문제 요약 - 주어진 배열에서 값을 더해서 가장 큰 합이 되도록 만드는 문제다 다이나믹 프로그래밍 문제라 할 수 있겠다 문제 풀이 - 임시 저장할 배열을 생성, 0 부터 시작해서 다음 숫자로 갈때마다 각 숫자까지 왔을때 최대의 합이 나오는 숫자를 새로 생성한 배열에 저장을 한다 . 1. 이 전 자리까지 더해서 나올 수 있는 가장 큰 값과 + 현재 자리수 2. 현재 자리수 저 2개를 비교해서 가장 큰 수를 배열에 저장 문제 정답 https://github.com/kwonhyucknae/algorithm_study/commit/a57ebcc092f54e10d933afa..
Handler Interceptor 핸들러 인터셉터란? 핸들러 맵핑(어떠한 요청을 처리해주는 핸들러를 찾는 것) 에 설정할 수 있는 것 핸들러에다가 인터셉터를 추가해준다. preHandle 에서는 핸들러가 실행되기 전에 호출이 되는데 '어떤 핸들러'가 실행되는지에 대한 정보도 사용 할 수 있어서 서블릿 필터보다는 세밀한 로직이 구현 될 수 있다. return 값으로는 계속 다음 인터셉터나 핸들러가 요청을 처리할 지 (true) , 아니면 응답이 여기서 끝날지를 결정한다. PostHanlde 에서는 이때는 view가 렌더링 되기 전 상황이다. 그래서 modelAndView 를 커스텀 할 수 있다. view에 전달할 추가적이거나 여러 핸들러에 공통적인 모델 정보를 담는데 사용 할 수 있다. afterCompletion 은? 요청 처리가 완전히..
WebMvcConfigurer - Formatter WebMvcConfigurer 를 사용해서 설정 하는 방법을 알아보자 첫번째로 먼저 볼 것은 Formatter 다 Formatter 란 객체를 문자열로 출력할 것인지 또는 문자열을 객체로 변환할 때 사용할 수 있는 것 먼저 name 으로 들어오는 값을 Person 으로 어떻게 변환 하는지를 스프링은 알 지 못한다. 그걸 알려주는게 formatter 다 text 값이 Person 의 setName 으로 들어가는 Formatter 를 만들어줬다. addFormatter 를 구현하면 되는데 여기서 Converter 도 쓸 수 있다 .이게 뭐냐면 Formatter 보다 훨씬 제네럴한 용도다 자바 객체에서 객체로 변경할 때 사용되곤 한다. 지금은 문자열을 받아서 객체로 바꾸거나 객체에서 문자열로 바꾸는 경우로 사..
스프링 MVC 설정 - WebMvcConfigurer 저번 시간에서는 EnableWebMvc 어노테이션을 이용하면 어떻게 빈 설정이 잡히는 지를 알아봤다. EnableWebMvc 가 상속받고 있는 delegatingWebMvcConfiguration 은 delegate 구조로 되어있어서 설정의 확장성이 높다고 할 수 있다. 원하는대로 설정은 커스텀 할 수 있다. WebMvcConfigurer 를 구현해서 확장성을 쉽게 할 수 있게 도와준다. 이렇게 하면 빈으로 설정을 만들지 않아도 EnableWebMvc 에 있는 설정을 커스텀 해서 같은 효과를 낼 수 있다. 이런식으로 오버라이드를 해서 사용 할 수 있다. 딱 이 모양이 스프링 부트 없이 스프링 MVC 를 사용하는 방법이다. 첫번째로, WebApplicationInitializer 를 이용해서 디스패처 서블..
스프링 MVC 설정 2 -- @EnableWebMvc 저번 시간에 봤던 MVC 설정은 전부 빈으로 설정을 등록을 해서 디스패처 서블릿에 설정을 넣어 줬다고 하면 이번에 알아 볼 것은 좀 더 자바 기반의 설정을 알아보도록 하자 먼저 이 설정을 편하게 해주는 스프링에서 제공하는 EnableWebMvc 를 알아보도록 하자 이것도 설정 파일인데 WebMvcConfigurationSupport 를 상속 받고 있다. 저 WebMvcConfigurationSupport 에 들어가보면 핸들러 맵핑도 들어가있고 이런 핸들러 어댑터도 있다. 핸들러 어댑터 같은 경우에는 메시지 컨버터를 사용해서 요청에 본문에 들어오는 메시지를 객체로 변환 하거나 반대로 응답을 객체를 특정 타입으로 변환한다. 그럼 디버거를 통해서 EnableWebMvc 를 달면 어떤 변화가 있는지를 확인해보자..