From 3404f57b8d70bbdb4e9df5946b9ae3ffa90f8b13 Mon Sep 17 00:00:00 2001 From: nahyunKoo Date: Sun, 23 Mar 2025 23:07:36 +0900 Subject: [PATCH] =?UTF-8?q?2=EC=A3=BC=EC=B0=A8=20=EA=B3=BC=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 ++-- .../com/example/week2/Week2Application.java | 1 + .../java/com/example/week2/builder/App1.java | 15 ++++++++++++ .../com/example/week2/builder/Student.java | 9 ++++---- .../example/week2/exception/ErrorCode.java | 4 +++- .../week2/exception/ExceptionController.java | 5 ++++ .../exception/GlobalExceptionHandler.java | 23 +++++++++++++++++++ .../exception/GlobalExceptionHandler2.java | 1 + .../example/week2/logger/LoggerExample2.java | 2 +- .../example/week2/logger/LoggerExample3.java | 1 - .../week2/swagger/config/SwaggerConfig.java | 6 ++--- 11 files changed, 59 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index d89f850..20f0d52 100644 --- a/build.gradle +++ b/build.gradle @@ -24,10 +24,10 @@ repositories { } dependencies { - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + //implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' - runtimeOnly 'com.mysql:mysql-connector-j' + //runtimeOnly 'com.mysql:mysql-connector-j' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' diff --git a/src/main/java/com/example/week2/Week2Application.java b/src/main/java/com/example/week2/Week2Application.java index e7f9dc6..5561a58 100644 --- a/src/main/java/com/example/week2/Week2Application.java +++ b/src/main/java/com/example/week2/Week2Application.java @@ -7,6 +7,7 @@ public class Week2Application { public static void main(String[] args) { + SpringApplication.run(Week2Application.class, args); } diff --git a/src/main/java/com/example/week2/builder/App1.java b/src/main/java/com/example/week2/builder/App1.java index b5f9553..b009f26 100644 --- a/src/main/java/com/example/week2/builder/App1.java +++ b/src/main/java/com/example/week2/builder/App1.java @@ -1,8 +1,23 @@ package com.example.week2.builder; +import com.example.week2.exception.CustomException; +import com.example.week2.exception.ErrorCode; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class App1 { + private static final Logger log = LoggerFactory.getLogger(App1.class); + public static void main(String[] args) { + Student student = Student.builder() + .age(20) + .name("구나현") + .school("세종대학교") + .build(); + log.error("에러가 났습니다"); + System.out.println(student); + throw new CustomException(ErrorCode.INVALID_REQUEST); } } diff --git a/src/main/java/com/example/week2/builder/Student.java b/src/main/java/com/example/week2/builder/Student.java index dabec74..6d016c0 100644 --- a/src/main/java/com/example/week2/builder/Student.java +++ b/src/main/java/com/example/week2/builder/Student.java @@ -6,15 +6,16 @@ import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; +import lombok.extern.slf4j.Slf4j; @Getter @Setter @AllArgsConstructor -@NoArgsConstructor @Builder @ToString +@Slf4j public class Student { - private String name; - private int age; - private String school; + final private String name; + final private int age; + final private String school; } diff --git a/src/main/java/com/example/week2/exception/ErrorCode.java b/src/main/java/com/example/week2/exception/ErrorCode.java index 4d28422..02424dd 100644 --- a/src/main/java/com/example/week2/exception/ErrorCode.java +++ b/src/main/java/com/example/week2/exception/ErrorCode.java @@ -6,9 +6,11 @@ @Getter @AllArgsConstructor +//enum 상수로 관리 public enum ErrorCode { - INVALID_REQUEST(HttpStatus.BAD_REQUEST, "잘못된 요청이 들어왔습니다"),; + INVALID_REQUEST(HttpStatus.BAD_REQUEST, "잘못된 요청이 들어왔습니다"), + SEJONG_UNI(HttpStatus.BAD_GATEWAY, "출력하고 싶은 메시지"); private final HttpStatus status; diff --git a/src/main/java/com/example/week2/exception/ExceptionController.java b/src/main/java/com/example/week2/exception/ExceptionController.java index 859ce8e..16950cf 100644 --- a/src/main/java/com/example/week2/exception/ExceptionController.java +++ b/src/main/java/com/example/week2/exception/ExceptionController.java @@ -21,4 +21,9 @@ public void throwIllegalArgumentException() { throw new IllegalArgumentException(); } + @GetMapping("/custom") + public void throwCustomException() { + throw new CustomException(ErrorCode.SEJONG_UNI); + } + } diff --git a/src/main/java/com/example/week2/exception/GlobalExceptionHandler.java b/src/main/java/com/example/week2/exception/GlobalExceptionHandler.java index 91a694e..02f01bc 100644 --- a/src/main/java/com/example/week2/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/example/week2/exception/GlobalExceptionHandler.java @@ -1,13 +1,16 @@ package com.example.week2.exception; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; +//rest 붙으면 바디만 반환 @RestControllerAdvice @Slf4j public class GlobalExceptionHandler { + //null pointer exception 을 잡고 메소드 실행 중요!! @ExceptionHandler(NullPointerException.class) public String handleNullPointerException() { log.error("NullPointer Exception 처리 시작"); @@ -19,4 +22,24 @@ public String handleInternalError() { log.error("InternalError 처리 시작"); return "InternalError 핸들링"; } + + @ExceptionHandler(CustomException.class) + public String handleCustomException() { + log.error("CustomException 처리 시작"); + return "CustomException 핸들링"; + } + + @ExceptionHandler(CustomException.class) + public ResponseEntity handleCustomException(CustomException e) { + log.error("CustomException 발생: {}", e.getMessage(), e); + + ErrorCode errorCode = e.getErrorCode(); + + ErrorResponse response = ErrorResponse.builder() + .errorCode(errorCode) + .errorMessage(errorCode.getMessage()) + .build(); + + return ResponseEntity.status(errorCode.getStatus()).body(response); + } } diff --git a/src/main/java/com/example/week2/exception/GlobalExceptionHandler2.java b/src/main/java/com/example/week2/exception/GlobalExceptionHandler2.java index 3173af8..57d1450 100644 --- a/src/main/java/com/example/week2/exception/GlobalExceptionHandler2.java +++ b/src/main/java/com/example/week2/exception/GlobalExceptionHandler2.java @@ -4,6 +4,7 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; +//rest 가 안붙으면 뷰!! 그래서 error.html 을 찾아서 반환 @ControllerAdvice @Slf4j public class GlobalExceptionHandler2 { diff --git a/src/main/java/com/example/week2/logger/LoggerExample2.java b/src/main/java/com/example/week2/logger/LoggerExample2.java index 8ce3a43..551ff28 100644 --- a/src/main/java/com/example/week2/logger/LoggerExample2.java +++ b/src/main/java/com/example/week2/logger/LoggerExample2.java @@ -2,7 +2,7 @@ import lombok.extern.slf4j.Slf4j; -@Slf4j +@Slf4j //logger 를 자동 생성해줌 public class LoggerExample2 { public static void main(String[] args) { diff --git a/src/main/java/com/example/week2/logger/LoggerExample3.java b/src/main/java/com/example/week2/logger/LoggerExample3.java index 0a8cfce..53e0cbf 100644 --- a/src/main/java/com/example/week2/logger/LoggerExample3.java +++ b/src/main/java/com/example/week2/logger/LoggerExample3.java @@ -14,7 +14,6 @@ public static void main(String[] args) { .build(); log.info("학생 이름은" + student.getName() + "입니다"); - log.info("학생 이름은 {} 입니다.", student.getName()); } } diff --git a/src/main/java/com/example/week2/swagger/config/SwaggerConfig.java b/src/main/java/com/example/week2/swagger/config/SwaggerConfig.java index 845209d..aeaa258 100644 --- a/src/main/java/com/example/week2/swagger/config/SwaggerConfig.java +++ b/src/main/java/com/example/week2/swagger/config/SwaggerConfig.java @@ -11,9 +11,9 @@ public class SwaggerConfig { @Bean public OpenAPI openAPI() { return new OpenAPI() - .info(new Info().title("Alom Spring Study") - .version("1.0") - .description("Alom Spring Study API 문서")); + .info(new Info().title("Alom Spring Study") //제목 지정 + .version("1.0") //버전 지정 + .description("Alom Spring Study API 문서")); //디스크립션 지정 } } \ No newline at end of file