Bean Validation Bean Validation은 특정한 구현체가 아니라 Bean Validation 2.0(JSR-380)이라는 기술 표준이다. 쉽게 이야기해서 검증 애노테이션과 여러 인터페이스의 모음이다. 마치 JPA가 표준 기술이고 그 구현체로 하이버네이트가 있는 것과 같다. Bean Validation을 구현한 기술중에 일반적으로 사용하는 구현체는 하이버네이트 Validator 이다. 이름이 하이버네이트가 붙어서 그렇지 ORM과는 관련이 없다. 의존관계 추가 Bean Validation을 사용하려면 build.gradle에 의존관계를 추가해야 한다. implementation 'org.springframework.boot:spring-boot-starter-validation..
Interceptor 스프링 인터셉터도 서블릿 필터와 같이 웹과 관련된 공통 관심 사항을 효과적으로 해결할 수 있는 기술이다. 서블릿 필터가 서블릿이 제공하는 기술이라면, 스프링 인터셉터는 스프링 MVC가 제공하는 기술이다. 둘다 웹과 관련된 공통 관심 사항을 처리하지만, 적용되는 순서와 범위, 그리고 사용방법이 다르다. 인터셉터의 흐름은 다음과 같다. HTTP 요청 ->WAS-> 필터 -> 디스패처 서블릿 -> 스프링 인터셉터 -> 컨트롤러 스프링 인터셉터는 디스패처 서블릿과 컨트롤러 사이에서 컨트롤러 호출 직전에 호출 된다. 스프링 인터셉터는 스프링 MVC가 제공하는 기능이기 때문에 결국 디스패처 서블릿 이후에 등장하게 된다. 아래는 인터셉터로 제한을 적용했을 때, 흐름이다. HTTP 요청 -> WA..
준영속 상태 준영속 상태란, 영속상태의 엔티티가 영속성 컨텍스트에서 분리된 것이다. 준영속 상태가 되면 영속성 컨텍스트가 제공하는 기능(dirty checking)을 사용하지 못한다. 준영속 상태로 만드는 방법 em.detach(entity) 특정 엔티티만 준영속 상태로 전환한다. Member findMember = em.find(Member.class, 2L); // 현재 member의 name은 hello이다. findMember.setName("hyuuny"); // findMember를 준영속 상태로 변경한다. em.detach(findMember); System.out.println("member : " + findMember); tx.commit(); findMember의 name을 "hyuu..
의존성 주입 DI는 디자인 패턴으로 크게 다음과 같이 4가지 방법이 있다. 생성자 주입 setter 주입 필드 주입(@Autowired) 일반 메서드 주입 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법 생성자 호출 시점에 단 1번만 호출되는 것이 보장된다. 불변, 필수 의존 관계에 사용 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepos..
Servlet Filter 필터는 서블릿이 지원하는 문지기와 같다. 만약 로그인한 회원만 게시판의 글 쓰기, 수정, 삭제 기능을 사용할 수 있다면, 해당 로직마다 로그인을 확인하는 기능을 추가해야 하고, 이 기능이 수정되었다면, 일일이 다 찾아서 수정도 해야 한다. 이러한 공통 관심사는 스프링의 AOP로 해결할 수 있지만, 웹과 관련된 공통 관심사는 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 필터의 흐름은 다음과 같다. HTTP 요청 -> WAS -> 필터 -> 디스패처 서블릿 -> 컨트롤러필터를 적용하면 필터가 호출 된 다음에 디스패처 서블릿이 호출된다. 그래서 모든 고객의 요청 로그를 남기는 요구사항이 있다면 필터를 사용하면 된다. /* 이라고 하면 모든 요청에 필터가 적용된다. 아래는..
- Total
- Today
- Yesterday
- 북클럽
- 스프링부트
- 정렬
- 스프링 부트
- kotlin
- 리팩토링
- mysql 8.0
- webflux
- MySQL
- 김영한
- Algorithm
- 스프링
- 데이터베이스
- 백준
- 문자열
- 노마드코더
- 자료구조
- Spring
- Real MySQL
- 파이썬
- 코틀린
- 노마드
- 그리디
- 인프런
- 코테
- 릿코드
- leetcode
- 알고리즘
- 구현
- spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |