diff --git a/our-memory/src/main/java/keepsake/ourmemory/application/memory/CoordinateExtractor.java b/our-memory/src/main/java/keepsake/ourmemory/application/memory/CoordinateExtractor.java index d326238..fa8cb50 100644 --- a/our-memory/src/main/java/keepsake/ourmemory/application/memory/CoordinateExtractor.java +++ b/our-memory/src/main/java/keepsake/ourmemory/application/memory/CoordinateExtractor.java @@ -24,7 +24,7 @@ public static Coordinate extractCoordinate(final Image image) throws IOException return Coordinate.of(latitude, longitude); } } catch (ImageProcessingException e) { - throw new RuntimeException(e); + return Coordinate.empty(); } return Coordinate.empty(); } diff --git a/our-memory/src/main/java/keepsake/ourmemory/application/repository/MemberRepository.java b/our-memory/src/main/java/keepsake/ourmemory/application/repository/MemberRepository.java new file mode 100644 index 0000000..9ed6f62 --- /dev/null +++ b/our-memory/src/main/java/keepsake/ourmemory/application/repository/MemberRepository.java @@ -0,0 +1,7 @@ +package keepsake.ourmemory.application.repository; + +import keepsake.ourmemory.domain.member.Member; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface MemberRepository extends JpaRepository { +} diff --git a/our-memory/src/main/java/keepsake/ourmemory/config/InitData.java b/our-memory/src/main/java/keepsake/ourmemory/config/InitData.java new file mode 100644 index 0000000..37e63a4 --- /dev/null +++ b/our-memory/src/main/java/keepsake/ourmemory/config/InitData.java @@ -0,0 +1,42 @@ +package keepsake.ourmemory.config; + +import keepsake.ourmemory.application.repository.MemberRepository; +import keepsake.ourmemory.domain.member.Email; +import keepsake.ourmemory.domain.member.Member; +import keepsake.ourmemory.domain.member.MemberName; +import keepsake.ourmemory.domain.member.Password; +import keepsake.ourmemory.domain.member.PhoneNumber; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.CommandLineRunner; +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +@Component +@Profile({"dev", "prod"}) +@RequiredArgsConstructor +public class InitData implements CommandLineRunner { + private final InitService initService; + + @Override + public void run(final String... args) { + initService.init(); + } + + @Component + @RequiredArgsConstructor + private static class InitService { + private final MemberRepository memberRepository; + + @Transactional + public void init() { + Member member = new Member( + new MemberName("아이크"), + new Email("a@a.com"), + new Password("아이크짱"), + new PhoneNumber("01012341234") + ); + memberRepository.save(member); + } + } +} diff --git a/our-memory/src/main/java/keepsake/ourmemory/ui/common/GlobalExceptionHandler.java b/our-memory/src/main/java/keepsake/ourmemory/ui/common/GlobalExceptionHandler.java index e7f5a3e..68ca4cf 100644 --- a/our-memory/src/main/java/keepsake/ourmemory/ui/common/GlobalExceptionHandler.java +++ b/our-memory/src/main/java/keepsake/ourmemory/ui/common/GlobalExceptionHandler.java @@ -32,7 +32,9 @@ public ResponseEntity> handleMethodArgumentNotValidException @ExceptionHandler(Exception.class) public ResponseEntity handleUnexpectedException(Exception e) { log.error("error from handleUnexpectedException = ", e); - ErrorResponse errorResponse = new ErrorResponse(e.getMessage()); - return ResponseEntity.internalServerError().body(errorResponse); + ErrorResponse errorResponse = new ErrorResponse("서버에서 예상치 못한 문제가 발생했습니다."); + return ResponseEntity + .status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(errorResponse); } } diff --git a/our-memory/src/main/resources/application.yml b/our-memory/src/main/resources/application.yml index 2ed9dc6..208cdc0 100644 --- a/our-memory/src/main/resources/application.yml +++ b/our-memory/src/main/resources/application.yml @@ -1,10 +1,8 @@ -spring: - datasource: - url: jdbc:h2:mem:testdb;MODE=MySQL - h2: - console: - enabled: true +spring: # 전체 공통 설정 + profiles: + active: dev # 기본 프로파일을 dev로 설정 jpa: + show-sql: true hibernate: ddl-auto: create properties: @@ -16,11 +14,21 @@ spring: multipart: maxFileSize: 10MB maxRequestSize: 20MB +--- +spring: # dev 프로파일에만 적용할 설정 + config: + activate: + on-profile: dev + datasource: + url: jdbc:h2:mem:testdb;MODE=MySQL + h2: + console: + enabled: true image: directory-path: src/main/resources/static/images/ web-uri: localhost:8080/images/ --- -spring: +spring: # prod 프로파일에만 적용할 설정 config: activate: on-profile: prod