Page 안에 있는 값을 먼저 살펴보자. Postman으로 조회했을 때 볼 수 있는 값이다. 이러한 형태는 어떻게 Rest Docs를 이용해서 나타낼 수 있을까? 엄청난 시간을 썼다. 저 모든 값을 다 필드로 나타내야 되는 건가? content 안에 있는 값에 접근해야 되는 건가? 어떻게 $.??.?? 이런 식으로 어떻게 접근해야 될까 시도를 엄청 많이했다. @RequestParam 값을 어떻게 처리해야 될까 전체 조회(페이징) 컨트롤러 먼저 내가 작성한 controller를 살펴보자. @GetMapping("/items") public Page readItemList(@RequestParam(value = "page", defaultValue = "0") Integer page, @RequestPara..
Springboot 3.1.0 환경에서 Spring Security로 인증 방식을 구현하던 중 FilterChain 등록 코드에서 deprecated 에러 사인이 등장했다. Spring Security 6.1.0 SpringBoot 3.1.0 버전은 Spring Security 6.1.0 버전을 dependency 한다. 람다 DSL 사용 Lambda DSL은 버전 5.2부터 Spring Security에 있으며 람다를 사용하여 HTTP 보안을 구성할 수 있습니다. HTTP 보안의 람다 구성이 이전 구성 스타일과 어떻게 비교되는지 살펴보겠습니다. 람다를 사용한 구성 (lamda DSL) @Configuration @EnableWebSecurity public class SecurityConfig { @B..
Parameter value [1] did not match expected type 내가 만든 쿼리 유튜브 댓글처럼, 대댓글을 불러오기 위한 쿼리를 생성했다. 이 api를 호출했을 때, 부모 댓글을 기준으로 자식 댓글을 불러온다. 예외 발생 어.. 내가 원하는 값은 parentId를 기준으로 comment를 불러오는 건데 왜 예외가 발생하지? 예외 발생 원인 쿼리를 자세히 보자. c.parent 자체는 객체, parentId는 Long타입이기 때문에 바인딩이 안 돼서 발생한 예외다. Comment Entity를 살펴보자 되게 사소한 실수지만, 누구나 접할 수 있는 실수다. 올바른 쿼리로 바꾸기 정상 동작함을 알 수 있다!
빌더 패턴(Builder pattern)이란? 객체를 정의하고 그 객체를 생성할 때 보통 생성자를 통해 생성하는 것을 생각한다. 객체를 생성할 수 있는 빌더를 builder() 함수를 통해 얻고 거기에 셋팅하고자 하는 값을 셋팅하고 마지막에 build()를 통해 빌더를 작동 시켜 객체를 생성한다. 빌더를 왜 써야할까? 1. 생성자 파라미터가 많을 경우 가독성이 좋지 않다. 2. 값을 넣는 순서가 상관이 없다. 1번 User oneUser = new User( "test@test", "test1", "bang", "010-1234-1234", "dsa", "hi", "n", "ahffk", "dsa", LocalDateTime.now()); 이런 경우에 어떤 값을 넣어야 되고 어떤 순서인지 너무 헷갈리지 ..
JDK11을 사용 중이면 2.7.7 버전을 사용해야 된다. 3.0.1은 JDK17부터 지원을 하기 때문이다 1. Git Repository를 먼저 생성한다. 2. (cmd를 이용해서) 내가 원하는 경로에 이 명령어를 입력하면 된다. git clone https://github.com/{본인_아이디}/{저장소 아이디}.git 본인 아이디는 나의 Git 아이디를 입력하면 된다. 저장소 아이디는 내가 만든 Repository 아이디를 입력하면 된다. 3. 이렇게 파일이 생성됨을 확인할 수 있다. 4. 내가 만든 프로젝트 파일을 이 폴더에 그대로 넣어주면 된다. 5. 인텔리제이 open을 이용해 build.gradle을 연다. 6. 인텔리제이 내부 Terminal을 이용해서 이 정보를 Git Repository..
뷰 리졸버 - InternalResourceViewResolver 스프링 부트는 InternalResourceViewResolver 라는 뷰 리졸버를 자동으로 등록하는데, 이때 application.properties 에 등록한 spring.mvc.view.prefix , spring.mvc.view.suffix 설정 정보를 사용해서 등록한다