Spring 142

[Spring Data JPA] 1. Core concepts

1. Repository 인터페이스Spring Data의 중심 인터페이스입니다.개념설명마커 인터페이스- 객체의 특정 성질을 표시하기 위해 사용- 타입 정보만을 포착하고 식별하는 데 사용 (메서드 정의 ❌)쿼리 메서드 자동 생성메서드 이름을 분석하여 자동으로 적절한 쿼리를 생성해줌Spring Data JPASpring Data JPA는 Repository 인터페이스를 자동으로 구현하여 CRUD 작업을 제공합니다. 코드) Repository더보기@Indexedpublic interface Repository { } 타입 인자T: 도메인 클래스ID: 도메인 클래스의 식별자 타입 예제) 쿼리 메서드 자동 생성더보기interface UserRepository extends CrudRepository { l..

[Spring MVC] 4-3. Handler Methods: Controller Advice

1. Controller Advice항목설명사용 어노테이션- @ControllerAdvice- @RestControllerAdvice: @ControllerAdvice + @ResponseBody 조합기본 적용 범위메서드가 선언된 @Controller 클래스 내에서만 적용됨동작 기반 구성 요소RequestMappingHandlerMapping,ExceptionHandlerExceptionResolver가 감지하여 적용내부 구성 가능 메서드@ExceptionHandler, @InitBinder, @ModelAttribute- @ExceptionHandler 우선순위로컬 메서드가 전역 메서드보다 우선 적용됨- @InitBinder / @ModelAttribute 우선순위전역 메서드가 로컬 메서드보다 우선 적..

Spring/Spring MVC 2023.10.17

[Spring MVC] 5. @InitBinder

1. @InitBinderWebDataBinder 객체를 초기화하는 데 사용되는 메서드를 표시하는 어노테이션입니다.컨트롤러에서 요청 데이터의 바인딩과 변환을 제어하고 사용자 정의하는데 유용한 도구입니다. WebDataBinder스프링의 데이터 바인딩과 유효성 검사 기능을 제공합니다.설정을 조정하여 특정 데이터 형식이나 커스텀 타입을 제대로 처리할 수 있습니다.항목설명문자열 기반 요청 값 변환요청 파라미터, 경로 변수, 헤더, 쿠키 등의 문자열 값을 컨트롤러 메서드의 타겟 타입으로 변환적용 대상- 요청 파라미터- 경로 변수 (PathVariable)- 헤더 값 (RequestHeader)- 쿠키 값 (CookieValue)요청 파라미터 바인딩클라이언트로부터의 요청 파라미터를 모델 객체에 바인딩모델 객체 값..

Spring/Spring MVC 2023.10.17

[Spring MVC] 4-2. Handler Methods: Type Conversion

1. Type Conversion항목설명문자열 변환 (기본 방식)@RequestParam, @PathVariable, @RequestHeader 등은 기본적으로 문자열 처리문자열이 아닌 변환인자가 String이 아닌 경우, 등록된 Converter, Formatter를 통해 자동 타입 변환 수행 예제) 문자열 변환더보기1. 기본 제공 구현체@GetMapping("/user")public String get(@RequestParam("newName") String newName, Model model) { model.addAttribute("message", "다음번에 갱신할 이름: " + newName); return "home";} 2. 커스터마이징public class StringToUse..

Spring/Spring MVC 2023.10.17

[Spring MVC] 4-1. Handler Methods: Method Arguments

1. Method ArgumentsSpring MVC에서 지원하는 handler method의 argument 입니다. Class클래스설명WebRequestNativeWebRequest직접 Servlet API를 사용하지 않고 요청 매개변수 및 요청 및 세션 속성에 액세스할 수 있습니다.jakarta.servlet.ServletRequestjakarta.servlet.ServletResponse웹 요청과 응답에 대한 기본 인터페이스입니다.다양한 요청 및 응답 유형에 대한 액세스를 제공합니다.HttpServletRequest와 같은 구체적인 서블릿 요청 유형으로 캐스팅될 수 있습니다.(ServletRequest, HttpServletRequest)(Spring’s MultipartRequest, Multi..

Spring/Spring MVC 2023.10.17

[Spring][Integration] 1. Task Execution: @Async

Spring은 비동기 작업의 실행을 위한 인터페이스를 제공합니다. Spring은 이러한 인터페이스를 구현하는 구현체도 제공합니다. 스레드 풀을 지원하거나 애플리케이션 서버 환경 내에서의 CommonJ에 위임할 수 있습니다 1. The Spring TaskExecutor Abstraction TaskExecutor Types Spring은 다양한 요구 사항과 환경에 맞게 선택할 수 있는 다양한 TaskExecutor 구현체를 제공합니다. SyncTaskExecutor 호출을 비동기적으로 실행하지 않습니다. 각 호출은 호출하는 쓰레드에서 직접 실행됩니다. 주로 멀티 쓰레딩이 필요하지 않은 상황, 예를 들어 간단한 테스트 케이스에서 사용됩니다. SimpleAsyncTaskExecutor 이 구현체는 쓰레드를 ..

Spring/Spring 2023.10.16

[Spring MVC] 1-2. DispatcherServlet: Special Bean Types

1. DispatcherServlet의 위임 구조DispatcherServlet는 WebApplicationContext의 대리 구성요소들에 작업을 위임하여 요청을 처리합니다.대리 구성요소는 Spring IoC Container에 Bean으로 등록되어 적절하게 사용됩니다. (커스터마이징 가능) 2. 처리 흐름  단계설명관련 구성요소 (전략)1. 요청 수신클라이언트의 HTTP 요청이 DispatcherServlet에 도착-2. Handler 찾기요청 URL에 맞는 컨트롤러(핸들러)를 찾음HandlerMapping(RequestMappingHandlerMapping)3. HandlerAdapter 선택찾은 Handler를 실행할 수 있는 Adapter를 선택HandlerAdapter(RequestMappin..

Spring/Spring MVC 2023.10.16

[Spring MVC] 1-1. DispatcherServlet: Context Hierarchy

1. Front Controller한 곳에서 요청을 받아서 적절한 컴포넌트에 라우팅하는 설계 패턴입니다.Spring MVC는 프론트 컨트롤러 패턴으로 설계되었습니다. DispatcherServletSpring MVC에서 프론트 컨트롤러 역할을 담당합니다. Java/XML 방식으로 설정 할 수 있습니다. 예제) XML더보기1. web.xml (webapp/WEB-INF/web.xml) org.springframework.web.context.ContextLoaderListener contextConfigLocation /WEB-INF/app-context.xml app org.springframework.we..

Spring/Spring MVC 2023.10.16

[Spring][Core] 2-8. Bean: Customizing the Nature of a Bean

1. Lifecycle CallbacksSpring은 빈의 생명주기와 상호작용할 수 있는 여러 방법을 제공합니다.이러한 도구를 활용하여 빈의 초기화 및 파괴 과정에 사용자 지정 동작을 추가할 수 있습니다. BeanPostProcessor 인터페이스빈 생성 전/후에 사용자 정의 로직을 실행할 수 있도록 하는 빈 후처리 인터페이스내부적으로 콜백 인터페이스를 찾아 적절한 메서드를 호출하기 위해 사용합니다.주요 메서드: postProcessBeforeInitialization(), postProcessAfterInitialization() Initialization Callbacks초기화 메서드는 컨테이너의 싱글톤 생성 잠금 내에서 실행됩니다.여러 스레드가 동시에 호출하려는 시도를 방지합니다. 항목 / 방법In..

Spring/Spring 2023.10.14

[Spring][Core] 2-7. Bean: Lazy-initialized Beans

1. Lazy-initialized Beans구분설명비고기본 동작ApplicationContext는 초기화 시 모든 싱글톤 빈을 즉시 생성설정 오류를 초기화 시점에 조기 발견 가능지연 초기화 (Lazy)빈의 생성 시점을 첫 요청 시점으로 지연자원 절약, 시작 시간 단축 설정예시) XML더보기 요소의 lazy-init 속성으로 제어됩니다. 예시) XML (컨테이너 수준)더보기 default-lazy-init 속성을 사용하여 컨테이너 수준에서 지연 초기화를 제어할 수 있습니다. 예외 사항Lazy 된 빈이 Non-Lazy 빈의 의존성인 경우해당 싱글톤 빈의 종속성을 만족시키기 위해, ApplicationContext는 지연 초기화 된 빈을 즉시 생성합니다.  출처Spring document - Lazy in..

Spring/Spring 2023.10.14