Spring
-
@AutowiredSpring 2023. 1. 30. 12:55
@Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } } [코드1. 생성자 주입] //테스트에서 사용 예시 @SpringBootTest class ..
-
entity와 Dto의 차이Spring 2022. 12. 23. 19:05
1. entity 클래스은 DB와 직접적으로 상호작용하는 클래스이다. 2. dto는 클라이언트의 요청과 응답 데이터를 관리하는(처리하는) 클래스이다. 3. entity 클래스는 DB 데이터를 직접적으로 다루기 때문에 Service 클래스에서 사용된다. 4. dto 클래스는 사용자의 요청을 직접적으로 다루기 때문에 Controller 클래스에서 사용된다. 정리하자면. - DB에 데이터를 저장하거나, DB에 있는 값을 가져오고 싶다면 주로 entity 클래스를 사용하고 - 클라이언트의 요청 데이터를 처리하고 싶을 때는 주로 dto 클래스를 사용한다.
-
request 스코프와 ObjectProviderSpring 2022. 12. 6. 00:06
request 스코프는 스프링 컨테이너에 등록되어 있는 빈 인스턴스를 있는 그대로 @Autowired 하게 되면 에러가 발생한다. (BeanCreationException) 왜냐하면 스프링 컨테이너에 있는 빈 인스턴스는 이미 활성화 되어 있는걸 가져오는 방식인데, 빈 인스턴스가 request Http 요청보다 먼저 등록이 되어버리면 Http 요청이 활성화 되어 있지 않은 상태에서 빈 인스턴스를 호출하게 되는 것이므로 에러가 발생한다. 이를 조금 더 쉽게 설명하자면 Http 요청에는 active와 active 되지 않은 상태로 나눌 수 있다. 우리가 request http 요청을 호출하기 전에는 active 되지 않은 상태일 것이다. 그런데 이 상황에 빈 인스턴스가 미리 들어와 있으니 request sco..
-
BindingFailureSpring 2022. 5. 30. 12:03
BindingFailure BindingFailure는 타입 오류 같은 바인딩 실패인지, 검증 오류인지 구별 값으로 true 또는 false 값을 넣어준다. 여기서 만약 BindingFailure를 false로 선언했는데, 타입 오류가 발생했을 때 default Message가 뜬다면 그것은 Field Error의 기능이다. Field Error는 자동으로 타입오류를 감지해주고 검증 에러를 발생시켜주기 때문이다. 예를 들어 숫자만 입력할 수 있는 가격 입력 칸이 있다고 가정해보자 그 칸에 "qqqq"라는 문자 값을 입력한다면 검증 에러가 발생한다. BindingFailure를 false로 해준다고 해도 말이다. 반면 bindingResult.addError(new FieldError("item", "it..
-
BindingResultSpring 2022. 5. 29. 21:44
Spring에서 제공하는 BindingResult 기본 java 로직에서 중복으로 쓰이는 단어들을 최소화시키도록 도와준다. 코드의 길이가 더 줄어든다. #fields로 BindingResult가 제공하는 검증 오류에 접근할 수 있다. th:errors를 이용하여 해당 필드에 오류가 있는 경우 태그를 출력한다. th:if의 편의 버전 th:errorclass를 이용해서 th:field에서 지정한 필드에 오류가 있으면 class 정보를 추가한다. 스프링이 제공하는 검증 오류를 보관하는 객체이다. 검증 오류가 발생하면 여기에 보관하면 된다.
-
@Valid, BindingResultSpring 2022. 1. 6. 12:36
@Valid @Valid를 이용해 객체를 검증할 수 있다. (사용자가 원하는 다양한 옵션으로) //controller에서 @Valid 선언 예시 @PostMapping("/members/new") public String create(@Valid MemberForm form){ //렌더링한 MemberForm이 파라미터로 넘어오게된다. } //MemberForm 객체에서 @NotEmpty 선언(@Valid 옵션 중 하나) @NotEmpty private String name;BindingResult //BindingResult 예시 @PostMapping("/members/new") public String create(@Valid MemberForm form, BindingResult result){ ..