본문 바로가기

Back-End/Spring Boot

(16)
Spring Boot - RestTemplate를 사용한 Server To Server 연결(1) RestTemplate란JDK, HttpURLConnection, Apache HttpComponents등과 같은 Http client 라이브러리의 간단한 template method API를  제공하며, Http요청을 동기적으로 처리하는 클라이언트이다.RestTemplate는 자주 사용되는 Http method templates 외에도, 자주 사용되지 않는 exchange 와 execute 같은 method들도 제공한다.※ 스프링 3.0부터 지원한다.spring.io RestTemplate문서서버의 입장에서 API를 제공하던 지금까지와는 다르게 서버가 하나의 클라이언트가 되어 다른 서버로 API를 요청할 수도 있다.RestTemplate를 사용해서 간단한 api를 개발해보자. 우선 서버를 생성해보자. ..
Spring Boot Interceptor란? Interceptor란Spring이 제공하는 기술로써, 디스패처 서블릿(Dispatcher Servlet)이 컨트롤러를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공한다Filter와 매우 유사한 형태로 존재하지만, 차이점은 Spring Context에 등록이 된다.AOP와 유사한 기능을 제공할 수 있으며, 주로 인증단계를 처리하거나, Logging하는 데에 사용한다.Interceptor 동작 위치 및 순서1. DispatcherServlet은 Request 객체를 받아서 분석한뒤 HandlerMapping에게 사용자의 요청을 처리할 핸들러를 찾도록 요청 한다.  2. 그결과로 HandlerExecutionChain이 동작하게 되는데, 이 HandlerExecutionChain은..
Spring Boot Filter란 Filter란Web Application에서 관리되는 영역으로써 Spring Boot Framework에서 Client로 부터 오는 요청/ 응답에 대해서 최초/ 최종 단계의 위치에 존재하며, 이를 통해서 요청/ 응답의 정보를 변경하거나, Spring에 의해서 데이터가 변환되기 전의 순수한 Client의 요청/ 응답 값을 확인할 수 있고 유일하게 ServletRequest, ServletResponse의 객체를 변환할 수 있다.주로 Spring Framework에서 request/ response의 Logging용도로 활용하거나, 인증과 관련된 Logic들을 해당 Filter에서 처리한다.또한 요청으로 들어온 정보중에 노출되면 위험한 정보들이 들어 있을 수 있어  DispatcherServlet 이 처리하..
Spring Boot @RestControllerAdvice를 이용한 예외 처리 방법 Spring Boot에서 예외처리 할 때에는 단순하게 @ExceptionHandler에서 로직을 다 구현하여 처리해도 되지만 Front-End와 협업을 해야하는 입장에서 Error Message는 예쁘게, 담아야 하는 내용이 다 담겨있게 만들 수록 좋다. 나름 예쁘게 나올 수 있도록 코드를 순서대로 작성해 보았다.1. Error 코드를 Enum으로 정의전역적으로 사용되는 GlobalErrorCode와 특정 도메인에 대해 구체적으로 내려가는 UserErrorCode로 나누고, 인터페이스를 이용해 추상화한다.public interface ErrorCode { HttpStatus getHttpStatus(); String getMessage();}// Global Error Code Enum@AllArgs..
AOP AOP(Aspect Oriented Programming): 관점지향 프로그래밍 여러가지 서비스들에 횡단 관심이 있을 때 사용이 가능한 프로그래밍 기법주요 AnnotationAnnotation의미@Aspect자바에서 널리 사용하는 AOP 프레임워크에 포함되며, AOP를 정의하는 Class에 할당@Pointcut기능을 어디에 적용시킬지, 메소드? Annotation? 등 AOP를 적용 시킬 지점을 설정@Before메소드 실행하기 이전@After메소드가 성공적으로 실행 후, 예외가 발생 되더라도 실행@AfterReturning메소드 호출 성공 실행 시(Not Throws)@AfterThrowing메소드 호출 실패 예외 발생(Throws)@Around@Befor/ @After 모두 제어 사용 예제출력을 하는 ..
IoC와 DI IoC(Inversion Of Control) : 제어의 역전스프링에서는 Java객체를 new로 생성지 않고 Spring Container에가 맡겨 객체를 주입 받는다.즉, 개발자에서 프레임워크로 제어의 객체 관리의 권한이 넘어 갔음으로 제어의 역전 이라고 한다. Spring Container로부터 객체를 주입받는 것을 DI라고 한다.DI(Dependenct Injection) : 의존성 주입DI 장점- 의존성으로 부터 격리시켜 코드 테스트에 용이하다.- DI를 통하여, 불가능한 상황을 Mock와 같은 기술을 통하여, 안정적으로 테스트 가능하다.- 코드를 확장하거나 변경할 때 영향을 최소화 한다.(추상화)- 순환참조를 막을 수 있다. IoC/ DI 예제 코드Base64와 Url인코딩하는 로직을 예로 들자..
Spring Boot Custom Validation만들기 Spring Boot에서 사용가능한 ValidationAnnotaion내용@Size문자 길이 측정@NotNullnull불가@NotEmptynull, ""불가@NotBlanknull, "", " " 불가@Past과거 날짜@PastOrPresent오늘이나 과거 날짜@Future미래 날짜@FutureOrPresent오늘이거나 미래 날짜@Pattern정규식 적용@Email이메일 형식 확인@Max최대값@Min최소값@AssertTrue/ False별도 Logic 적용@Valid해당 Object Validation 실행여러가지를 Spring Boot에서 제공을 해주지만 제공해주는 것 만으로는 부족할 때가 많다. 이럴 때 직접 Annotation을 만들어서 사용할 수 있다. Spring Boot Validate Ann..
Spring Boot Validation 사용 Validation이란?Validation이란 프로그래미에 있어서 가장 필요한 부분이다. 특히 Java에서는 null 값에 대해서 접근 하려고 할 때NullPointerException이 발생 함으로, 이러한 부분을 방지하기 위해서 미리 검증하는 과정을 Validation 이라고 한다. 이름과 비밀번호 나이가 입력으로 들어온다 했을 때, 단순하게 생각하면public void validate(String name, String pwd, int age) { if(name == null || pwd == null) { return; } if(age == 0) { return; } // logic}위와 같이 작성할 수 있을것이다. 하지만 위와 같은 코드들이 반복될 수록 아래와..