본문 바로가기
반응형

학습146

RestTemplate RestTemplate이란? RestTemplate은 클라이언트 사이드에서 동기적인 HTTP 요청을 하는 클래스이다. Spring JdbcTemplate과 마찬가지로, HTTP client에 기반을 둔다. HTTP client 라이브러리는 다른 서버로 request를 보내 response 받아 데이터를 처리하는 기능이 있으며 RestTemplate 이외에 JDK HttpURLConnection, Apache HttpComponents 등이 있다. RestTemplate의 장점 RestTemplate은 기본적으로 HttpUrlConnection으로 구현되어 있다. HttpUrlConnection이나 다른 HTTP client API를 사용하면, 요청을 할 떄마다 같은 상용구 코드가 계속 또 계속 반복등장한.. 2021. 8. 15.
Filter vs Interceptor 차이 (Spring) 개요 Filter와 Interceptor는 모두 요청을 받을 때, 특정 조건으로 제한을 하거나 변경을 할 때 사용하는 것으로 알고 있습니다. 그런데, 단순히 사용만 해보고 어디서 어떻게 작동하는지는 확인했던 적이 없습니다. 그래서 이번 기회에 정리해보겠습니다. 그림에서 알아보는 Filter와 Interceptor Filter Filter는 Web Application에서 관리되며 Spring Framework에 속하지 않습니다. 로깅, UTF-8 설정에 이용되며, 또 하나의 대표적인 예는 Spring Security가 있습니다. Interceptor Interceptor는 DispatcherServlet 안에서 있으며, Spring의 Context에서 관리됩니다. 초록 배경화면을 보면 Intercepto.. 2021. 8. 13.
Validation 어노테이션 직접 만들어보기 build.gradle에 추가한 spring-boot-starter-validation 덕분에 많은 Validaiton 어노테이션들을 사용했고 이것이 전부라고 생각했습니다. 하지만, 알고보니 제가 직접 커스터마이징을 해서 사용할 수 있었습니다. 따라서, 해당 방법에 대해 정리해보고자 합니다. 1. 의존성 추가 // Gradle implementation 'org.springframework.boot:spring-boot-starter-validation' 2. 어노테이션 생성 "yyyyMM" 형식으로 문자열을 입력했는지 알아보는 어노테이션을 만들고자 한다. 아래는 어노테이션을 만드는 가장 기초적인 방법으로 처음에는 굉장히 낯설겠지만 하나씩 이해하다보면 생각보다 직접 만드는게 어렵지 않다. @Constra.. 2021. 8. 12.
@Qualifier & @Resource & @Autowired 문득, 인터페이스를 구현한 클래스들의 @Component등록을 보면서 @Qualfier와 @Resrouce를 살펴보게 되었다. @Autowired로 객체를 사용하고 싶을 때, Spring Container에 Type이 같은 객체들이 여러개 등록되어있다면, 어떤 것을 사용할지 명시해주어야 한다. public interface Party { } ==== package com.sourceallies.person; ... @Component public class Person implements Party { } === package com.sourceallies.organization; ... @Component public class Organization implements Party { } public .. 2021. 8. 12.
AOP AOP(aspect-oritented programming) 이란? AOP는 관심사 횡단 교차점의 분리로 모듈화를 향상시키는 패러다임이다. 코드 자체를 변경하지 않고도 기존의 코드에 부가적인 행동을 추가시킬 수 있는데, 대신에 "pointcut" 설정을 통해 수정되는 코드를 별도로 지정해야 한다. 예를 들어, "함수의 이름이 set으로 시작하는 경우, 로그시간을 계산한다" 가 있다. aop를 통해 비지니스 로직에 중요하지 않은 행위들이 코드의 중요 부분을 복잡하게 만들지않고 프로그램에 추가가 가능하다. AOP는 프로그램 로직을 개별의 부분으로 분리시킨다.(관심사의 분리라고도 한다.) 사실 거의 모든 프로그래밍 패러다임은 구현, 추상화, 관심사의 통합으로 사용될 수 있는 추상화(함수, 절차, 모듈, 클래스.. 2021. 8. 11.
Spring MVC * Sprinv MVC Model : 비지니스 로직을 처리하고 해당 내용을 담는 공간이다. View : 클라이언트가 요청에 따른 화면에 Model에 저장된 결과를 나타낸다. Controller : 클라이언트의 요청을 받는다. * Spring MVC의 처리과정 Client로부터 요청이 들어오면 DispatcherServlet이 호출된다. DispatcherServlet은 받은 요청을 HandlerMapping에 전달한다. 요청받은 URL을 분석하여 적합한 Controller를 찾는다. DispatcherServlet는 HandlerAdapter를 호출한다. HandlerApdater는 2번에서 찾은 Controller을 통해 비지니스 로직을 처리한다.(Service, DB 이용) 비지니스 로직을 처리하고 .. 2021. 8. 8.
IoC, DI IoC(Inversion Of Control) 스프링에서 일반적인 Java 객체를 new로 생성하여 개발자가 관리하는 것이 아닌 Spring Container에게 맡긴다. 즉, 개발자에서 프레임워크로 제어의 객체관리 권한이 넘어갔으므로 "제어의 역전"이라고 한다. DI(Dependency Injection) 장점 - 의존성으로부터 격리시켜 테스트에 용이하다 - 코드를 확장하거나 변경할 때 영향을 최소화한다(추상화) - 순환참조를 막을 수 있다. 순수히 객체를 생성하는 자바의 경우를 확인하자 Base64 와 Url 인코더 2개를 만들고 상황에 따라 적용하도록 코드를 짜본다. 1. Base64Encoder public class Base64Encoder { public String encode(String .. 2021. 8. 8.
ObjectMapper ObjectMapper란? JSON 형식을 사용할 때, 응답들을 직렬화하고 요청들을 역직렬화 할 때 사용하는 기술이다. (*여기서 다소 생소한 JSON 형식, 직렬화, 역직렬화를 잠깐 살펴본다.) JSON(Javascript Object Notation) "키 :값" 쌍으로 이루어진 데이터 객체를 전달하기 위해 사람이 읽을 수 있는 텍스트를 사용하는 포맷이다. 본래는 자바스크립트 언어로부터 파생되어 자바스크립트 구문 형식을 따르지만 플랫폼과 언어 독립형 데이터 형식이다. 따라서 프로그래밍언어나 플랫폼에 독립적이므로 C, 자바, 파이썬 등에서 JSON 데이터 생성을 위한 코드를 각자 가지고 있다. JS를 제외한 언어는 라이브러리를 사용해야하는 경우가 많다 직렬화 (Serialize) 데이터를 전송하거나 저.. 2021. 8. 6.
HTTP vs. WWW HTTP vs WWW HTTP는 웹 브라우저(Client)와 웹 서버(Server)가 소통하기 위한 표준 '언어'이다. HTTP는 데이터가 한곳에서 다른곳으로 전송하며 온라인에서 커뮤니케이션이 가능하도록 하는 프로토콜이다. WWW는 하이퍼텍스트 문서들의 모음이다. World Wide Web이고 접두사로 많이 쓰인다. 웹 브라우저(FireFox, Google Chrome 등등)에서 확인할 수 있는 링크가 있는 하이퍼텍스트 문서들의 모음이다. 아래 사진은 link로 연결된 하이퍼텍스트 문서들이며 이들의 묶음이 WWW이다. 공통점은 HTTP와 WWW모두 웹사이트의 URL에서 사용된다는 것이다. HTTP VS WWW in URLs URL에서 HTTP나 WWW를 제거해도 된다. 그러나, 하나라도 제거하는 상황에는.. 2021. 8. 5.
반응형