전체 글 420

[Java] Stream

1. Stream집계연산을 지원하는 일련의 데이터 소스 객체입니다.데이터를 저장하는 용도가 아닌 계산하는 용도로 사용됩니다.데이터의 변환과 계산을 위한 중간 연산과 최종 연산을 제공합니다.컬렉션과 다르게 내부적으로 연산이 수행됩니다.병렬화하여 다중 코어 아키텍처를 활용하는데 유용합니다. 2. 선언형 프로그래밍과 StreamStream 객체를 사용하여 데이터 처리를 섬세하게 표현할 수 있습니다.데이터 처리 패턴이 선언적인 연산인 SQL과 유사합니다.함수형 프로그래밍과 선언형 연산을 지원하여 구현을 감추고 기능을 명시적으로 표현할 수 있습니다. 3. 파이프라인 및 연산 체이닝Stream은 더 큰 파이프라인 체이닝을 형성하기 위해 자기 자신을 리턴합니다.연산의 효율성을 위한 게으른 연산을 수행하며, 최종 연산..

Java 2023.10.22

[Spring Data JPA] 2-2. Transactionality

1. 기본 트랜잭션 설정CrudRepository 메서드SimpleJpaRepository로부터 트랜잭션 설정을 상속받습니다.읽기 작업의 경우, 트랜잭션 설정의 readOnly 플래그는 true로 설정됩니다.그 외의 모든 작업은 @Transactional로 설정됩니다. (기본 트랜잭션 설정이 적용되도록) 2. 트랜잭션 설정 커스터마이징특정 저장소 메서드의 트랜잭션 설정 조정Method Override (+@Transactional 설정)findAll() 메서드는 10초의 타임아웃을 갖고 readOnly 플래그 없이 실행됩니다.public interface UserRepository extends CrudRepository { @Override @Transactional(timeout = 10) pu..

[Spring Data JPA] 1. Core concepts

1. Repository 인터페이스@Indexedpublic interface Repository { }Spring Data의 중심 인터페이스입니다. 마커 인터페이스타입 정보 포착 및 식별에 활용 (구체적 메서드 X)확장 인터페이스 식별 및 추적 Spring Data JPA 와의 연계Spring Data JPA는 Repository 인터페이스를 인식하여, 개발자가 필요로 하는 CRUD 작업의 구현체를 자동으로 제공합니다. 타입 인자T: 도메인 클래스ID: 도메인 클래스의 식별자 타입 2. CrudRepository와 ListCrudRepository 인터페이스관리되는 엔터티 클래스에 대해 고급 CRUD 기능을 제공합니다.개발자는 이 인터페이스를 확장함으로써 엔터티에 대한 기본 CRUD 작업을 쉽게 수행할..

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

1. Controller Advice 특정 컨트롤러나 전체 컨트롤러에 걸쳐 로직을 중앙화하는데 사용되는 어노테이션입니다. 예외 처리, 바인딩 설정, 모델 어트리뷰트 설정 등에 사용됩니다. @ExceptionHandler, @InitBinder, @ModelAttribute 적용 범위 기본적으로 해당 메서드가 선언된 @Controller 내에서만 적용됩니다. @ControllerAdvice나 @RestControllerAdvice 클래스 내에서 선언된 경우, 어느 컨트롤러에서든 적용될 수 있습니다. 빈 등록 @ControllerAdvice @ComponentScan 메타-어노테이션되어 있습니다. 컴포넌트 스캔을 통해 스프링 빈으로 등록될 수 있습니다. @RestControllerAdvice @Control..

Spring/Spring MVC 2023.10.17

[Spring MVC] 2-3. Handler Methods: DataBinder

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

Spring/Spring MVC 2023.10.17

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

1. Type Conversion String-based Request Input 어노테이션이 붙은 컨트롤러 메서드 인수들은 대개 문자열 기반의 요청 입력을 나타냅니다. Type Conversion 인수가 String 이외의 다른 것으로 선언되었을 경우 타입 변환이 필요할 수 있습니다. 이러한 변환은 구성된 컨버터를 기반으로 자동으로 적용됩니다. 2. Convertion Types Default Supported Types 기본적으로, int, long, Date 등의 단순한 타입들이 지원됩니다. Customizing Type Conversion 타입 변환을 사용자 정의하려면 WebDataBinder를 통해 할 수 있습니다. 또는 FormattingConversionService에 Formatter를 등..

Spring/Spring MVC 2023.10.17

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

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

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