본문 바로가기

spring28

spring Interceptor 본 글에서는 이전글에서 다루었던 Spring Filter와 유사한 기능을 가지고 있는 Spring Interceptor에 대해 알아보겠습니다. Spring Filter 본 글에서는 모든 Rest API에 특정작업을 Rest API 종류와 무관하게 모두 적용할 수 있는 Spring Filter에 대해 알아보겠습니다. Controller에서 몇개의 메서드가 있던, Http Method 방식이 Get이건 Post이건 무관 dnl1029.tistory.com 필터와 마찬가지로 모든 Rest API에 특정작업을 Rest API 종류와 무관하게 모두 적용할 수 있습니다. Filter에서 핵심코드는 chain.doFilter이지만, Interceptor에서는 preHandle, postHandle, afterComp.. 2023. 5. 20.
spring Filter 본 글에서는 모든 Rest API에 특정작업을 Rest API 종류와 무관하게 모두 적용할 수 있는 Spring Filter에 대해 알아보겠습니다. Controller에서 몇개의 메서드가 있던, Http Method 방식이 Get이건 Post이건 무관하게 Filter를 구축해놓으면 모든 Rest API에 대해 공통작업을 할 수 있는데, 주로 인증/인가 혹은 로깅에 사용할 수 있습니다. 핵심 코드는 chain.doFilter(request, response)이며,doFilter 이전의 코드는 Controller 실행 전, doFilter 이후의 코드는 Controller 실행 후 실행된다는 특징이 있습니다. doFilter를 호출해야 다음번 필터로 넘어가거나, 다음번 필터가 없으면 디스패처 서블릿에게 넘어.. 2023. 5. 20.
spring Bean Validation 적용(@NotNull, @NotEmpty, @NotBlank, @Max, @Min) 본 글에서는 Bean Validation을 통해 @RequestBody를 통해 Rest API 요청을 보낼 때, 간단한 Validation을 구현해보려 합니다. 우선 의존성은 아래와 같이 추가하였습니다. (jdk 17, springboot 3.0.6버전, maven) org.springframework.boot spring-boot-starter-validation - Dto @Data public class BeanValidationDto { //null 불가, "" 가능, " "가능 @NotNull private String name1; //null 불가, ""불가, " "가능 @NotEmpty private String name2; //null 불가, "" 불가, " "불가 @NotBlank pri.. 2023. 5. 19.
spring RestAPI 어노테이션 정리 Spring에서 RestAPI를 사용할때 자주 쓰고, 헷갈리는 어노테이션들을 정리하였습니다. 1. @Controller, @RestController, @ResponseBody @Controller는 웹 요청을 수신하는 클래스이며, @Component 어노테이션을 포함하고 있습니다. 그리고 Return으로 뷰를 반환하기 때문에 별도로 뷰에 대해 작성한 코드가 있어야 합니다. @RestController는 @Controller와 @ResponseBody 어노테이션을 합친것과 같습니다. @Controller와 @ResponseBody를 같이 명시하면, Return을 html같은 뷰가 아닌 Http요청의 응답문 Body에 찍히는 데이터를 그대로 보여줍니다. 보통 JSON 데이터 형식을 많이 사용하고, Spri.. 2023. 5. 14.
spring Rest API Request(RestTemplate, Feign 비교) 본 글에서는 RestTemplate과 Feign을 사용하여 Spring에서 Rest API에 Request 보내는 부분을 다루겠습니다. Rest API에 대한 개념적인 설명은 생략하려 합니다. Client와 Server와의 통신이 Rest API로 이루어지지만, Server에서 다른 Server의 데이터를 가져오고 싶을때도 Rest API를 통해 통신이 이루어집니다. 이때 Spring에서 제공하는 Http 통신 템플릿인 RestTemplate 방식과 NetFlix에서 개발한 Feign Client 방식을 통해 각각 Rest API를 호출해보고 비교를 해보고자 합니다. 사용하기는 Feign 방식이 훨씬 간편합니다. 우선 개발하고자 하는 구조는 아래와 같습니다. 하나의 Controller, 하나의 Servi.. 2023. 5. 12.
spring Bean 개념정리 2편(@Configuration, @Bean, @Qualifier, @Primary) 본 글에서는 Spring Bean과 연관이 있는 @Configuration, @Bean, @Qualifier, @Primary 어노테이션에 대해 총정리를 하겠습니다. 이전 글에서 Spring 컨테이너에 Bean을 등록하기 위해서, Bean 등록을 원하는 각 클래스별로 @Component 어노테이션을 추가하여 Bean 등록을 할 수 있다고 말씀드렸는데요. Spring Bean 개념정리 1편 Spring Bean 개념정리 1편(Spring 컨테이너, @Component,싱글톤, Swagger, Bean 조회) 본 글에서는 Spring Bean과 관련한 여러가지 개념들을 정리하였습니다. 이전 글에서 의존성 주입(DI)의 핵심 개념으로, Spring 컨테이너에 Bean을 등록하고, 이를 조회해서 객체에 주입하는.. 2023. 5. 10.
spring Bean 개념정리 1편(Spring 컨테이너, @Component,싱글톤, Swagger, Bean 조회) 본 글에서는 Spring Bean과 관련한 여러가지 개념들을 정리하였습니다. 이전 글에서 의존성 주입(DI)의 핵심 개념으로, Spring 컨테이너에 Bean을 등록하고, 이를 조회해서 객체에 주입하는 과정을 설명하였습니다. Spring 의존성 주입 Spring 의존성 주입(DI, Dependency Injection) spring 관련 첫 글로 무엇이 좋을까 하다가, 의존성 주입에 대한 글을 쓰게 되었습니다. 가장 보편적인 케이스인 Controller라는 클래스에서 Service 클래스를 호출하는 코드를 통해 이해해보겠습니다. dnl1029.tistory.com ---------------------------- 의존성 주입 핵심 ---------------------------- 1. 본인 클래스가 .. 2023. 5. 4.
spring 의존성 주입(DI, Dependency Injection), @Autowired, 생성자 주입 spring 관련 첫 글로 무엇이 좋을까 하다가, 의존성 주입에 대한 글을 쓰게 되었습니다. 가장 보편적인 케이스인 Controller라는 클래스에서 Service 클래스를 호출하는 코드를 통해 이해해보겠습니다. - Service @Slf4j public class BeanTestService { public void log() { log.info("log test..."); } } - Controller public class BeanTestController { public void beanTest() { BeanTestService.log(); } } BeanTestController에서 BeanTestService의 log라는 메서드를 사용하려고 호출해봤자, 사용하지 못합니다. 이러한 경우에 sp.. 2023. 5. 3.