Spring

    [Spring] @Valid 를 이용한 Exception처리와 ThymeLeaf 처리

    [Spring] @Valid 를 이용한 Exception처리와 ThymeLeaf 처리

    다음과 같이 도메인 위에 어노테이션을 이용해서 조건을 걸 수가 있다. (@Past는 과거 날짜만 들어오게끔한 어노테이션) import javax.validation.constraints. ~~ 를 import 하는데 만약 오류가 뜬다면 implementation 'org.springframework.boot:spring-boot-starter-validation' 위의 의존성을 추가하자(gradle 프로젝트 기준이고, maven 은 알아서 dependency 설정으로 추가해주면 될 것이다.) Valid로 검사해주려는 값 앞에 @Valid를 붙인다. 일단 exception 처리를 해주려고 하기 때문에 파라미터 값으로 BindingResult를 넣으면 오류가 난다. @ControllerAdvice를 이용해서..

    [Spring] @ControllerAdvice를 이용한 Exception custom 처리하기

    [Spring] @ControllerAdvice를 이용한 Exception custom 처리하기

    @ControllerAdvice는 모든 컨트롤러에 대한 처리를 해줄 수 있다(ex initBinder 라던지...) 그러나 보통 컨트롤러에 대한 예외처리기로 대부분 사용하게 된다. 위의 코드는 @ControllerAdvice를 통해 예외처리를 해주는데, UserNotFoundException 이라는 class 를 따로 만들어줘서 예외처리를 custom 하게 처리할 수 있게끔 만들었다. 첫번째의 handleAllExceptions 메서드는 모든 Exception에 대해 INTERNAL_SERVER_ERROR의 상태를 가지게끔 만들었다.두번째 메서드는 UserNotFoundException의 경우에만 들어가게끔 해주었다. 그리고, 양 메서드 둘 다 ExceptionResponse라는 내가 따로 만들어준 Ob..

    [Spring] @ResponseStatus 를 이용해 예외 상태 변경하기

    [Spring] @ResponseStatus 를 이용해 예외 상태 변경하기

    Rest api를 제작하는 과정에서 없는 id 값을 찾을 때의 에러 상태가 500이 떴다. 이것을 아래와 같이 404 NOT FOUND로 변경하고 싶어서 변경해 주었다. 1 2 3 4 5 6 @ResponseStatus(HttpStatus.NOT_FOUND) public class UserNotFoundException extends RuntimeException { public UserNotFoundException(String msg) { super(msg); } } Colored by Color Scripter cs 다음과 같이 @ResponseStatus 를 통해 변경해주었다. HttpStatus. 아래에 굉장히 많은 값들이 있으니 골라쓰면 된다.

    [Spring] PathVariable 사용법

    자주 사용해도 항상 헷갈리는 PathVariable 이 참에 정리해버리자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 //{ } 안에 들어있는 이름과 @PathVariable를 사용한 변수명이 일치해야 한다. // helloWorld/홍길동/각시탈 을 입력하게 된다면 hello world, 홍길동 각시탈 이 출력된다. // String nam, String nam2 이렇게 변수명을 설정하게 된다면 오류가 나게될 것이다. @GetMapping("/helloWorld/{name}/{name2}") public HelloWorldBean helloWorldBean(@PathVariable String name, @PathVariable String na..

    [Spring] UriComponentsBuilder 사용하기

    UriComponentsBuilder는 여러개의 파라미터를 이용하여 URL를 작성할 때에 굉장히 편하게 작성할 수 있게끔 도와준다. docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/util/UriComponentsBuilder.html#fromPath-java.lang.String- UriComponentsBuilder (Spring Framework 5.2.8.RELEASE API) Request to have the URI template pre-encoded at build time, and URI variables encoded separately when expanded. In comparison to UriCompo..

    ENUM 에 대해 알아보자

    enum Animal{ RABBIT, CAMEL, TIGER } 이것들은 class Animal{ public static final animal RABBIT= new animal(); public static final animal CAMEL= new animal(); public static final animal TIGER= new animal(); private animal(){} } 와 같다. 상수타입을 자바5 버전에 들어서 enum을 추가한 것이다. 생성자가 private이다. 이것은 클래스 animal를 인스턴스화 하지 못하게끔 의도한 것이다. enum은 클래스이기 때문에 생성자를 가질 수 있다. enum Animal{ RABBIT, CAMEL, TIGER; Animal(){ System.o..

    스프링 시큐리티 denied Page 404 뜨는 이유

    원래라면 accessDeniedPage는 403 에러가 떠야하는데, 404에러가 뜰 때가 있다. 이 때에는 큰 착각을 했을 것이다. .exceptionHandling().acce4ssDeniedPage("/user_denied") 이렇게 해두면 usr_denied.html 로 가는게 아니라 저곳으로 get 보내기 때문에 착각하지말자 컨트롤러에 @GetMapping("/user_denied") 해놓고 return 으로 적절한 html 로 보내자. 이것을 찾지못하고 있기 때문에 404 에러가 뜨게된다.

    Spring Data JPA, Querydsl 조금 정리

    Spring Data JPA, Querydsl 조금 정리

    스프링 데이터 JPA 조회 결과가 많거나 없으면 List findByUsername(String name); //컬렉션 Member findByUsername(String name); //단건 Optional findByUsername(String name);; //단건 Optional 컬렉션: 결과 없음: 빈 컬렉션 반환 단건 조회: 결과 없음: null 반환 결과가 2건 이상: javax.persistence.NonUniqueResultException 예외 발생 * 단건으로 지정한 메서드를 호출 시에 JPQL의 Query.getSingleResult() 메서드를 호출하는데, 이 메서드를 호출했을 때 조회 결과가 없으면 javax.persistence.NoResultException 예외가 발생하게 ..