일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- iterator
- 코드로배우는스프링부트웹프로젝트
- ㅒ
- baeldung
- Kernighan의 C언어 프로그래밍
- 네트워크 설정
- 티스토리 쿠키 삭제
- 구멍가게코딩단
- 서버설정
- 친절한SQL튜닝
- 자료구조와 함께 배우는 알고리즘 입문
- GIT
- 처음 만나는 AI수학 with Python
- 스프링부트핵심가이드
- /etc/network/interfaces
- d
- 자료구조와함께배우는알고리즘입문
- 스프링 시큐리티
- 리눅스
- 처음 만나는 AI 수학 with Python
- 이터레이터
- 코드로배우는스프링웹프로젝트
- 선형대수
- 페이징
- 데비안
- resttemplate
- 알파회계
- network configuration
- 목록처리
- 자바편
- Today
- Total
목록전체 글 (406)
bright jazz music
그런데 원래대로라면 InvalidRequest를 ExceptionController에 추가해 줘야한다.그러나 애플리케이션이 커지면서 예외도 늘어나게 된다. 따라서 다른 방법을 사용해 본다. 자바에서 기본 제공해주는 예외들은 기존처럼 따로 만들어준다. 그리고 자바에서 제공되지는 않지만 애플리케이션 운영에서 발생하는 공통적으로 처리해야 하는 예외들은 하나의 클래스를 만들어 대응한다. 프로그램 전체에서 사용할 Exception클래스를 하나 만들어서 그것으로 하여금 에러들을 처리하게 하는 것이다. 여기서는 그 BlogException이라는 추상 클래스를 생성하여 그것으로 하여금 모든 에러를 처리하게 할 것이다. 앞선 예제들에서는 각각의 에러 클래스들이 RuntimeException 클래스를 상속하였다. 이제부터..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/M9AGX/btrV5favv3X/N6UpXjK7SyWbfdW54ec8V1/img.png)
예외처리 1에서는 정상적이지 않은 입력값이 들어갔을 경우의 예외처리를 구성하였다. 이번에는 PostController에서 발생할 수 있는 오류에 대한 예외처리를 만들고 테스트한다. 우선 단건 조회부터. //PostService.java //... //단건 조회 public PostResponse get(Long id) { Post post = postRepository.findById(id) // .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 글입니다.")); //있으면 post반환 없으면 에러 반환 // .orElseThrow(() -> new PostNotFound()); .orElseThrow(PostNotFound::new); //위와 같은 ..
자바에서 기본 제공하는 예외 말고 좀 더 명확하게 의미를 전달하는 고유의 예외 클래스를 만들어서 사용한다. 컨트롤러는 바뀐 것이 없다. PostService.java에서 수정한다. //PostController.java ///... @Slf4j @RestController @RequiredArgsConstructor public class PostController { private final PostService postService; @PostMapping("/posts") public void post(@RequestBody @Valid PostCreate request) { postService.write(request); // return Map.of(); } //단건 조회 @GetMapping..
//PostController.java //... @Slf4j @RestController @RequiredArgsConstructor public class PostController { private final PostService postService; @PostMapping("/posts") public void post(@RequestBody @Valid PostCreate request) { postService.write(request); // return Map.of(); } //단건 조회 @GetMapping("/posts/{postId}") public PostResponse get(@PathVariable Long postId){ PostResponse response = postSe..
//PostService.java //PostEdit에서 검증하지 않는다면 아래와 같은 로직이 들어가야 한다. @Transactional public void edit(Long id, PostEdit postEdit){ Post post = postRepository.findById(id).orElseThrow(PostNotFound::new); post.edit( postEdit.getTitle() != null ? postEdit.getTitle() : post.getTitle(); postEdit.getContent() != null ? postEdit.getContent() : post.getContent()); } 이게 귀찮아서 PostEditor를 만들어 준 것이다. 2. PostService..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bAYOmY/btrVF8PnR8g/UtSbEQyW1z17Eueao3FZJ1/img.png)
어차피 수정할 필드가 같으므로 Post.java를 사용할 수 있다. 그러나 다른 기능별로 나눠 주는 것이 좋다. 게시글을 수정하기 위해 사용할 클래스를 만들어준다. //PostEdit.java package com.endofma.blog.request; import lombok.Builder; import lombok.Getter; import lombok.Setter; import javax.validation.constraints.NotBlank; @Getter @Builder public class PostEdit { @NotBlank(message = "타이틀을 입력하세요.") private String title; @NotBlank(message = "콘텐츠를 입력해 주세요.") private ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dcQAwl/btrVv126snH/eCjWZt4rVpaKQcwGakYv8k/img.png)
PostController.java //PostController.java package com.endofma.blog.controller; //... @Slf4j @RestController @RequiredArgsConstructor public class PostController { private final PostService postService; @PostMapping("/posts") public void post(@RequestBody @Valid PostCreate request) { postService.write(request); // return Map.of(); } //단건 조회 @GetMapping("/posts/{postId}") public PostResponse get(@..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vjanZ/btrVoGFJ9Gg/8EkIWtOWGAOk5rHcyAGzNk/img.png)
@PageableDafault를 컨트롤러에 달아 페이징 관련 파라미터를 받아서그걸 서비스에 넘긴 뒤에 JpaRepository를 사용해서 데이터를 가져오는 작업을 했다. 그렇지만 나만의 페이징 클래스를 만들어서, 그 안에서 검증을 거치고 서비스로 넘긴 뒤, 리포지토리에 QueryDSL를 하나 만들어 주고, QueryDSL로 페이징 처리를 하는 방법도 좋다. 따라서 여기서는 queryDsl을 사용해서 페이징 처리를 한다. /*build.gradle*/ plugins { id 'java' id 'org.springframework.boot' version '2.7.6' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'com.e..
페이징 처리 @PageableDafault를 컨트롤러에 달아 페이징 관련 파라미터를 받아서그걸 서비스에 넘긴 뒤에 JpaRepository를 사용해서 데이터를 가져오는 작업을 했다. ---------- //PostController.java package com.endofma.blog.controller; import com.endofma.blog.domain.Post; import com.endofma.blog.request.PostCreate; import com.endofma.blog.response.PostResponse; import com.endofma.blog.service.PostService; import lombok.RequiredArgsConstructor; import lombok...
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bkrGhn/btrU8FUsdcd/8pJxzn6jeqy6sAUXSAQRK0/img.png)
//PostController.java @Slf4j @RestController @RequiredArgsConstructor public class PostController { private final PostService postService; @PostMapping("/posts") public void post(@RequestBody @Valid PostCreate request) { postService.write(request); // return Map.of(); } //단건 조회 @GetMapping("/posts/{postId}") public PostResponse get(@PathVariable Long postId){ PostResponse response = postService...