Spring Framework
Spring SpEL: Spring Expression Language 스프링 표현 언어
SpEL: Spring Expression Language Expression Lanuage(표현 언어)는 값 또는 식을 조작하거나, 데이터나 설정 값을 가져올 수 있게 하는데 사용되는 표현식에 가까운 언어입니다. SqEL은 Spring Framework에서 사용되는 EL의 한 종류로, 스프링 모든 영역에서 사용 가능한 언어 형식입니다. 주로 설정 파일에서 값 설정, 빈 생성 조건, 프로퍼티 접근 등을 위해 활용됩니다. 프로퍼티 접근: 빈의 프로퍼티 값을 가져오거나 설정 가능 메서드 호출: 빈의 메서드를 호출하고 결과 가져오기 수학 및 논리 연산: 산술, 비교, 논리 연산 가능 조건문 및 반복문: 조건문과 반복문을 지원 컬렉션 처리: 리스트, 맵 등의 컬렉션을 처리할 수 있음 코드 내에서 SqEL 사용 ..
Spring WebClient를 활용하여 HTTP 요청 처리하기
WebClient란? WebClient가 도입되기 전에는 주로 RestTemplate을 사용하여 HTTP 요청을 보냈었습니다. RestTemplate은 Spring의 기본적인 HTTP 클라이언트 라이브러리로, 동기적으로 동작합니다. 즉, RestTemplate을 사용하면, 요청과 응답을 처리하기 위해 Blocking I/O 방식을 사용하여 스레드를 블로킹하고 기다립니다. 이는 스레드 자원의 낭비를 초래할 수 있고, 이로 인해 서버의 응답성이 저하될 수 있습니다. `WebClient`는 RestTemplate의 단점을 개선하기 위해 비동기적인 방식으로 동작하여, 동시에 여러 요청을 처리할 수 있습니다. 또한 리액티브 프로그래밍과 함께 사용하기에 적합합니다. 비동기 처리 (동기적인 처리도 가능) 리액티브 프..
Spring @RequestParam/@PathVariable/@RequestBody/@RequestHeader/@CookieValue
Spring Framework에서 Controller 메서드의 매개변수와 함께 사용되는 어노테이션들을 정리해보겠습니다. 이들은 클라이언트의 요청에서 데이터를 추출하거나 전달되기 위해서 주로 사용되며 각 어노테이션은 서로 다른 용도와 사용 방식을 가지고 있습니다. `@RequestParam`: 요청 매개변수 값 취득 `@PathVariable`: 경로 변수 값 취득 `@RequestBody`: 요청 본문(body)에서 데이터를 추출, JSON 또는 XML 같은 형식의 데이터를 컨트롤러 메서드의 매개변수로 변환합니다. `@RequestHeader`: 요청 헤더 값 취득 `@CookieValue`: 쿠키 값 취득 @RequestParam 요청 매개변수를 추출하는데 사용됩니다. URL 쿼리 문자열이나 POST ..
Spring web.xml, root-context.xml, servlet-context.xml
web.xml은 웹 애플리케이션의 배포 설명자 파일로, 웹 어플리케이션의 구성과 설정을 정의하는 XML 파일입니다. root-context.xml과 servlet-context.xml은 web.xml에서 로드되는 Spring 구성 파일입니다. root-context.xml은 전역적인 빈을 servlet-context.xml은 웹 계층과 관련된 빈을 설정합니다. 이를 통해 Spring 웹 애플리케이션의 구성과 설정을 모듈화하고 관리할 수 있습니다. web.xml Java 웹 애플리케이션의 배포 설명자 파일(Deployment Descriptor)로, 웹 애플리케이션의 구성과 설정을 정의하는 XML 파일입니다. 즉 설정을 위한 설정 파일입니다. 처음 WAS가 구동될 때 각종 설정을 정의해줍니다. root-c..
Spring @ControllAdvice와 @ExceptionHandler로 전역 예외처리 하기
@ExceptionHandler `@ExceptionHandler`는 특정 예외가 발생했을 때 해당 예외를 처리하는 메서드를 정의할 수 있습니다. `@ExceptionHandler`는 적용 범위 제한이 있는데, `@Contoller`, `@RestController`, `@ControllerAdvice`에서 사용이 가능합니다. 컨트롤러가 적용된 Bean에서 발생하는 예외를 잡고 해당 예외가 설정된 `@ExceptionHandler`가 적용된 메서드가 실행됩니다. @Controller public class demoController { //... @ExceptionHandler(Exception.class) public ResponseEntity handleException(Exception ex) { ..
로그인 처리를 위한 UserDetailsService
https://yeo-computerclass.tistory.com/347 [spring security] Spring Security 흐름 / 인증(Authentication) & 인가(Authorization) Spring Security 흐름 Filter(필터) Spring Security의 웹 인프라는 표준 서블릿 필터를 기반으로 합니다. Spring Security 내부에 여러 개의 필터가 각자 특정 책임을 갖고 Request를 처리하는 필터 체인(Filter.. yeo-computerclass.tistory.com 위 포스팅한 글을 먼저 읽고오는 것을 추천한다. UserDetailsService 위 글에서 "UserDetailsService 인터페이스의 구현체가 사용자의 정보와 사용자가 가진 ..
Spring Thymeleaf 살펴보기
Thymeleaf (타임리프) ? 타임리프는 Spring Framework를 사용하는 개발자들에게 JSP 대신 쓰이는 템플릿 엔진입니다. HTML 5를 준수하는 형태로 기술할 수 있기 때문에 타임리프는 웹 어플리케이션에 적합한 템플릿 엔진입니다. 요즘 서비스에서는 JSP와 타임리프는 잘 쓰이진 않습니다. 백엔드에서는 데이터를 JSON으로 전달하고 프론트엔드에서는 리액트나 뷰로 전달받은 데이터를 가공하기 때문입니다. 타임리프가 최근 자주 쓰이는 용도로는 백엔드에서 간단히 관리자(Admin) 페이지를 만드는 경우입니다. 같이 협업해서 결과를 산출하는 실무에서는 잘 쓰이진 않지만 공부하는 차원에서 포스팅하도록 하겠습니다. Thymeleaf 사용 설정 dependencies { implementation 'or..
Spring ResponseEntity
ResponseEntity REST 방식으로 호출하는 경우 데이터 자체를 전송하기 때문에 데이터를 요청한 쪽에서는 정상적인 데이터인지 비정상적인 데이터인지 구분할 수 있는 방법이 필요합니다. 이를 위해 RESTful 웹 서비스를 개발할 때 `ResponseEntity`를 사용합니다. `ResponseEntity`는 HTTP 응답의 상태 코드, 본문 데이터, 헤더 등을 명시적으로 설정하여 클라이언트와의 통신을 할 수 있습니다. 상태 코드 설정: HTTP 응답의 상태 코드를 명시적으로 설정 가능합니다. 응답 본문 설정: HTTP 응답의 본문 데이터를 설정할 수 있습니다. JSON, XML , 문자열 등 다양한 데이터 형식을 지원합니다. 제네릭 타입을 사용하여 데이터 타입을 명시할 수도 있습니다. 응답 헤더 ..