스프링부트52 Spring REST 컨트롤러에서 HTTP 헤더 읽기 Spring 컨트롤러에서 HTTP 헤더를 읽는 방법을 소개한다. @RequestHeader annotation HttpServletRequest 인스턴스 @RequestHeader annotation Spring은 전체 또는 특정 헤더 값을 컨트롤러 메서드의 인수로 맵핑하는 @RequestHeader annotation을 제공한다. @RequestHeader annotation 유형은 파라미터이다. HashMap을 통한 HTTP 헤더 읽기 @RequestHeader annotation을 사용해 모든 HTTP 헤더를 Map 인스턴스에 맵핑한다. @PostMapping(value = "/read-header-map") public void readHeader(@RequestHeader Mapheaders) .. 스프링부트 2023. 10. 29. Spring에서 특정 HTTP 응답 상태 반환하기 클라이언트가 서버에 특정 HTTP 요청을 보내면 서버는 HTTP 응답 상태를 반환한다. 클라이언트는 응답 코드를 통해서 서버가 요청 처리를 실패했는지, 거부했는지, 성공했는지 알 수 있다. Spring 기반 애플리케이션에서 기본 프레임워크는 서버가 반환하는 모든 응답에 적절한 HTTP 응답 상태 코드를 자동으로 추가한다. 또한 Spring은 컨트롤러의 HTTP 응답 상태를 사용자 정의하는 방법도 제공한다. HTTP Response Status Code 1xx : 1로 시작하는 모든 상태 코드는 정보 코드이다. 2xx : 요청이 성공적으로 완료되었음을 나타낸다. 3xx : 리다이렉션을 나타낸다. 요청을 처리하기 위해 추가 조치가 필요하다. 4xx : 요청이 유효하지 않거나 완료할 수 없어 요청에 실패했다... 스프링부트 2023. 10. 28. REST PUT vs PATCH Spring REST 서비스 예제를 통해서 HTTP PUT과 HTTP PATCH 요청 메서드에 대한 차이점에 대해서 알아보자. HTTP PUT vs PATCH PUT과 PATCH는 모두 요청 URI로 표시된 리소스를 수정하는 데 사용되지만 약간의 차이점이 있다. HTTP PUT 요청 메서드 새 리소스를 생성하거나 대상 리소스를 요청 페이로드에 제공된 리소스로 대체된다. 멱등성이 유지되어 사용자가 같은 요청을 반복해도 동일한 결과를 얻는다. PUT 요청의 전제 조건은 요청 본문에 리소스에 대한 완전한 데이터를 보내는 것이다. 리소스를 부분적으로 수정하려는 경우라도 수정되지 않는 나머지 필드를 모두 포함시킨다. 요청에 변경되지 않는 필드가 포함되어 있지 않은 필드는 서버에서 null 값을 채운다. HTTP .. 스프링부트 2023. 10. 22. spring boot 3.1 docker compose support spring boot 3.1부터 docker compose를 지원한다. docker compose를 수행하기 위한 yaml 정의 파일이 있다면 spring boot에서 docker compose를 자동으로 실행하여 container를 실행시키고 ConnectionDetails 추상화를 통해서 자동으로 연결을 설정한다. 이를 통해서 로컬 환경에서 애플리케이션 구동을 위해서 수동으로 docker container를 실행시키고 애플리케이션 설정에서 외부 서비스 연결에 대한 설정을 따로 지정하지 않아도 된다. 이번 포스팅에서는 spring boot docker compose에 대해서 기록한다. ConnectionDetails 추상화에 대한 설명은 Spring Boot 3.1's ConnectionDetails .. 스프링부트 2023. 10. 22. spring boot container 기반 테스트 spring boot application 테스트를 위해서 혹은 로컬에 개발 테스트 환경을 구축하기 위해서 3rd party 서비스를 로컬 환경에 설치하거나 embedded 서비스를 사용하여 테스트를 하는 경우가 많다. 이러한 작업은 꽤 번거로운 일이 될 수 있는데 TestContainers를 이용하여 손쉽게 container 기반의 테스트를 수행할 수 있다. 이번 포스팅에서는 샘플 코드를 기반으로 spring boot에서 TestContainers를 이용하는 방법에 대해서 기록한다. spring boot 3.1.4 버전에서 샘플코드를 작성하였다. spring boot 3.1 버전 부터 ConnectionDetails 추상화 기능이 추가되어 TestContainers에 대한 몇 가지 개선사항이 있는데 해.. 스프링부트 2023. 10. 19. spring boot 로그백 (logback) 설정 방법 logback은 log4j 프로젝트의 후속 버전으로 log4j 1.x가 중단된 이후 버전을 이어받아 발전시켜 왔다. spring boot는 기본적으로 logback 로깅 시스템을 채택하여 제공한다. logback-spring.xml 작성을 통해서 logback에 대한 확장 설정을 통해서 로그를 커스텀하게 기록할 수 있다. 이번 포스팅에서는 logback에 대한 몇 가지 중요한 내용에 대한 설명과 이를 활용하여 logback 확장설정(logback-spring.xml) 하는 방법에 대해서 기록한다. sprng boot dependency org.springframework.boot:spring-boot-starter-logging 종속성에 logback에 대한 종속성이 포함되어 있다. org.springf.. 스프링부트 2023. 10. 14. spring boot logging Spring Boot에는 일반적으로 Spring 프레임워크의 spring-jcl 모듈에서 제공하는 Commons Logging API를 제외하고는 필수 로깅 종속성이 없다. Logback을 사용하려면 클래스 경로에 Logback과 spring-jcl을 포함시켜야 한다. 이를 위해서 spring-boot-sterter-logging 종속성을 추가하면 된다. 웹 애플리케이션의 경우 spring-boot-starter-web이 spring-boot-starter-logging 종속성을 포함하고 있기 때문에 spring-boot-starter-web 종속성만 추가하면 Logback을 사용할 수 있다. 정확하게 말하자면 spring-boot-starter-logging 의존성은 spring-boot-starter.. 스프링부트 2023. 10. 12. STOMP와 ACTIVEMQ를 이용한 메시지 broadcasting STOMP(Simple Text Oriented Messaging Protocol)은 중개 서버를 통해 클라이언트 간에 비동기 메시지를 전달하기 위해서 설계된 간단한 상호 운용 프로토콜이다. 이 프로토콜은 클라이언트와 서버 간에 전달되는 메시지에 대한 텍스트 기반 형식을 정의한다. STOMP는 활발히 사용되어 왔으며 많은 메시지 브로커와 클라이언트 라이브러리에서 지원되고 있다. STOMP는 TCP 및 웹소켓과 같은 신뢰할 수 있는 양방향 스트리밍 네트워크 프로토콜을 통해서 사용할 수 있다. ActiveMQ는 대표적인 메시지 브로커이고 STOMP를 지원한다. 이번 포스팅에서는 spring boot에서 STOMP와 ActiveMQ를 이용하여 메시지 broadcasting 하는 방법에 대해서 기록한다. Act.. 스프링부트 2023. 10. 11. spring boot scheduler basic Spring은 주기적인 작업을 자동으로 수행할 수 있도록 하는 scheduler를 제공하여 이를 간소화할 수 있다.Spring framework는 메서드 scheduling에 대한 지원을 제공한다. @Scheduled annotation을 사용하여 메서드를 예약된 메서드로 손쉽게 변환할 수 있다.@Scheduled annotation은 메서드 수준 annotation이며 Spring Bean 클래스의 메서드에 추가해야 한다.@Scheduled annotation 매개 변수를 제공하여 고정된 주기로 실행할지 또는 특정 시간 및 날짜에 실행할지 지정할 수 있다.이번 포스팅에서는 spring boot의 scheduler를 사용하는 방법과 properties에 대해서 기록한다. spring boot schedu.. 스프링부트 2023. 10. 9. spring boot kafka 연동하기 Spring에서 kafka 연동은 Apache kafka의 spring-kafka 프로젝트의 auto configuration 제공을 통해서 지원된다. kafka 설정은 spring.kafka.*의 외부 구성 속성에 의해서 설정할 수 있다. 이번 포스팅에서는 kafka messeage 송수신을 위한 auto configuration에 대해서 기록한다. dependencyspring boot에서 kafka를 사용하기 위해서 필요한 dependency는 아래와 같다. org.springframework.boot spring-boot-starter-parent 3.1.4 ... org.springframework.boot spring-boot-starter .. 스프링부트 2023. 10. 8. spring bean scope Spring framework에서 중요한 개념 중 하나로 Bean의 scope를 설정하여 객체의 생성과 사용에 대한 제어를 할 수 있다. Spring에서 제공하는 Bean scope의 5가지 유형에 대해서 기록한다. Spring Bean Scope Singleton (default) Prototype Request Session Application 5가지 scope 유형 중에서 Singleton과 Prototype은 표준 범위라고 하며 ApplicationContext에서 사용할 수 있다. Requst, Session, Application 유형은 웹 기반 애플리케이션에서만 사용할 수 있다. Singleton Scope 단 하나의 인스턴스만 생성할 수 있는 클래스는 singleton 이다. 애플리케이션.. 스프링부트 2023. 10. 3. application events and listeners Spring framework는 애플리케이션 기동시 ContextRefreshedEvent 외에도 몇 가지 추가적인 이벤트를 전송한다. 이번 포스팅에서는 애플리케이션 기동시 발생하는 events와 이에 대한 listeners에 대해서 기록한다. 일부 event는 ApplicationContext가 생성되기 전에 발생하므로 해당 event에 대한 리스너를 @Bean으로 등록할 수 없다. ApplicationContext가 생성되기 전에 발생하는 event listener를 등록하려면 SpringApplication.addListeners(...) 메서드 또는 SpringApplicationBuilder.listeners(...) 메서드를 이용하여 등록할 수 있다. 애플리케이션이 생성되는 방식에 관계없이 해.. 스프링부트 2023. 10. 2. 이전 1 2 3 4 5 다음 💲 추천 글