From 0c8386f6f64abc356548839b589727a4b5ec3419 Mon Sep 17 00:00:00 2001 From: dongHyo Date: Thu, 19 May 2022 01:35:34 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20properties=20message=20=EB=8B=A4?= =?UTF-8?q?=EA=B5=AD=EC=96=B4=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/global/config/MessagesConfig.java | 28 ++++++++++++++++ .../application/request/SignUpRequest.java | 12 +++---- .../ticketing/server/user/domain/User.java | 14 ++++---- .../server/user/service/UserServiceImpl.java | 1 + .../server/user/service/dto/SignUp.java | 12 +++---- .../main/resources/i18n/messages.properties | 7 ++++ .../resources/i18n/messages_en.properties | 7 ++++ .../resources/i18n/messages_ko.properties | 7 ++++ .../server/user/domain/UserTest.java | 33 ++++--------------- 9 files changed, 76 insertions(+), 45 deletions(-) create mode 100644 server/src/main/java/com/ticketing/server/global/config/MessagesConfig.java create mode 100644 server/src/main/resources/i18n/messages.properties create mode 100644 server/src/main/resources/i18n/messages_en.properties create mode 100644 server/src/main/resources/i18n/messages_ko.properties diff --git a/server/src/main/java/com/ticketing/server/global/config/MessagesConfig.java b/server/src/main/java/com/ticketing/server/global/config/MessagesConfig.java new file mode 100644 index 0000000..721b180 --- /dev/null +++ b/server/src/main/java/com/ticketing/server/global/config/MessagesConfig.java @@ -0,0 +1,28 @@ +package com.ticketing.server.global.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.ResourceBundleMessageSource; +import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; + +@Configuration +public class MessagesConfig { + + @Bean + public ResourceBundleMessageSource messageSource() { + ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); + messageSource.setBasename("i18n/messages"); + messageSource.setDefaultEncoding("UTF-8"); + + return messageSource; + } + + @Bean + public LocalValidatorFactoryBean getValidator() { + LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean(); + factoryBean.setValidationMessageSource(messageSource()); + + return factoryBean; + } + +} diff --git a/server/src/main/java/com/ticketing/server/user/application/request/SignUpRequest.java b/server/src/main/java/com/ticketing/server/user/application/request/SignUpRequest.java index 0b31d34..b97612a 100644 --- a/server/src/main/java/com/ticketing/server/user/application/request/SignUpRequest.java +++ b/server/src/main/java/com/ticketing/server/user/application/request/SignUpRequest.java @@ -9,18 +9,18 @@ import lombok.Getter; @Getter public class SignUpRequest { - @NotEmpty(message = "이름은 필수 입니다.") + @NotEmpty(message = "{validation.not.empty.name}") private String name; - @NotEmpty(message = "이메일은 필수 입니다.") - @Email(message = "이메일이 올바르지 않습니다.") + @NotEmpty(message = "{validation.not.empty.email}") + @Email(message = "{validation.email}") private String email; - @NotEmpty(message = "패스워드는 필수 입니다.") + @NotEmpty(message = "{validation.not.empty.password}") private String password; - @NotEmpty(message = "휴대번호는 필수 입니다.") - @Phone(message = "휴대번호가 올바르지 않습니다.") + @NotEmpty(message = "{validation.not.empty.phone}") + @Phone(message = "{validation.phone}") private String phone; public SignUp toSignUp() { diff --git a/server/src/main/java/com/ticketing/server/user/domain/User.java b/server/src/main/java/com/ticketing/server/user/domain/User.java index 23dd2d0..526868d 100644 --- a/server/src/main/java/com/ticketing/server/user/domain/User.java +++ b/server/src/main/java/com/ticketing/server/user/domain/User.java @@ -19,26 +19,26 @@ import lombok.NoArgsConstructor; public class User extends AbstractEntity { @Column(name = "name") - @NotEmpty(message = "이름은 필수 입니다.") + @NotEmpty(message = "{validation.not.empty.name}") private String name; @Column(name = "email") - @NotEmpty(message = "이메일은 필수 입니다.") - @Email(message = "이메일이 올바르지 않습니다.") + @NotEmpty(message = "{validation.not.empty.email}") + @Email(message = "{validation.email}") private String email; @Column(name = "password") - @NotEmpty(message = "패스워드는 필수 입니다.") + @NotEmpty(message = "{validation.not.empty.password}") private String password; @Column(name = "grade") - @NotNull(message = "사용자 등급은 필수 입니다.") + @NotNull(message = "{validation.not.empty.grade}") @Enumerated(value = EnumType.STRING) private UserGrade grade; @Column(name = "phone") - @NotEmpty(message = "휴대번호는 필수 입니다.") - @Phone(message = "휴대번호가 올바르지 않습니다.") + @NotEmpty(message = "{validation.not.empty.phone}") + @Phone(message = "{validation.phone}") private String phone; private boolean isDeleted = false; diff --git a/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java b/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java index 18a2092..eaff4af 100644 --- a/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java +++ b/server/src/main/java/com/ticketing/server/user/service/UserServiceImpl.java @@ -23,6 +23,7 @@ public class UserServiceImpl implements UserService { private final PasswordEncoder passwordEncoder; private final UserRepository userRepository; + @Override @Transactional public User register(@Valid SignUp signUpDto) { validateEmail(signUpDto.getEmail()); diff --git a/server/src/main/java/com/ticketing/server/user/service/dto/SignUp.java b/server/src/main/java/com/ticketing/server/user/service/dto/SignUp.java index e1e9062..a7ccaf7 100644 --- a/server/src/main/java/com/ticketing/server/user/service/dto/SignUp.java +++ b/server/src/main/java/com/ticketing/server/user/service/dto/SignUp.java @@ -9,18 +9,18 @@ import org.springframework.security.crypto.password.PasswordEncoder; @Getter public class SignUp { - @NotEmpty(message = "이름은 필수 입니다.") + @NotEmpty(message = "{validation.not.empty.name}") private String name; - @NotEmpty(message = "이메일은 필수 입니다.") - @Email(message = "이메일이 올바르지 않습니다.") + @NotEmpty(message = "{validation.not.empty.email}") + @Email(message = "{validation.email}") private String email; - @NotEmpty(message = "패스워드는 필수 입니다.") + @NotEmpty(message = "{validation.not.empty.password}") private String password; - @NotEmpty(message = "휴대번호는 필수 입니다.") - @Phone(message = "휴대번호가 올바르지 않습니다.") + @NotEmpty(message = "{validation.not.empty.phone}") + @Phone(message = "{validation.phone}") private String phone; public SignUp(String name, String email, String password, String phone) { diff --git a/server/src/main/resources/i18n/messages.properties b/server/src/main/resources/i18n/messages.properties new file mode 100644 index 0000000..a8c66b8 --- /dev/null +++ b/server/src/main/resources/i18n/messages.properties @@ -0,0 +1,7 @@ +validation.not.empty.name="\uC774\uB984\uC740 \uD544\uC218 \uC785\uB2C8\uB2E4." +validation.not.empty.email="\uC774\uBA54\uC77C\uC740 \uD544\uC218 \uC785\uB2C8\uB2E4." +validation.not.empty.password="\uD328\uC2A4\uC6CC\uB4DC\uB294 \uD544\uC218 \uC785\uB2C8\uB2E4." +validation.not.empty.grade="\uC0AC\uC6A9\uC790 \uB4F1\uAE09\uC740 \uD544\uC218 \uC785\uB2C8\uB2E4." +validation.not.empty.phone="\uD734\uB300\uBC88\uD638\uB294 \uD544\uC218 \uC785\uB2C8\uB2E4." +validation.email="\uC774\uBA54\uC77C\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4." +validation.phone="\uD734\uB300\uBC88\uD638\uAC00 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4." diff --git a/server/src/main/resources/i18n/messages_en.properties b/server/src/main/resources/i18n/messages_en.properties new file mode 100644 index 0000000..36cdd98 --- /dev/null +++ b/server/src/main/resources/i18n/messages_en.properties @@ -0,0 +1,7 @@ +validation.not.empty.name="name is required." +validation.not.empty.email="email is required." +validation.not.empty.password="password is required." +validation.not.empty.grade="user grade is required." +validation.not.empty.phone="phone is required." +validation.email="email is not valid." +validation.phone="phone is not valid." diff --git a/server/src/main/resources/i18n/messages_ko.properties b/server/src/main/resources/i18n/messages_ko.properties new file mode 100644 index 0000000..a8c66b8 --- /dev/null +++ b/server/src/main/resources/i18n/messages_ko.properties @@ -0,0 +1,7 @@ +validation.not.empty.name="\uC774\uB984\uC740 \uD544\uC218 \uC785\uB2C8\uB2E4." +validation.not.empty.email="\uC774\uBA54\uC77C\uC740 \uD544\uC218 \uC785\uB2C8\uB2E4." +validation.not.empty.password="\uD328\uC2A4\uC6CC\uB4DC\uB294 \uD544\uC218 \uC785\uB2C8\uB2E4." +validation.not.empty.grade="\uC0AC\uC6A9\uC790 \uB4F1\uAE09\uC740 \uD544\uC218 \uC785\uB2C8\uB2E4." +validation.not.empty.phone="\uD734\uB300\uBC88\uD638\uB294 \uD544\uC218 \uC785\uB2C8\uB2E4." +validation.email="\uC774\uBA54\uC77C\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4." +validation.phone="\uD734\uB300\uBC88\uD638\uAC00 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4." diff --git a/server/src/test/java/com/ticketing/server/user/domain/UserTest.java b/server/src/test/java/com/ticketing/server/user/domain/UserTest.java index e6705a6..63d929e 100644 --- a/server/src/test/java/com/ticketing/server/user/domain/UserTest.java +++ b/server/src/test/java/com/ticketing/server/user/domain/UserTest.java @@ -1,7 +1,6 @@ package com.ticketing.server.user.domain; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; import java.util.Set; import javax.validation.ConstraintViolation; @@ -23,6 +22,7 @@ class UserTest { void init() { ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); validator = factory.getValidator(); + } @Test @@ -49,10 +49,7 @@ class UserTest { Set> constraintViolations = validator.validate(user); // then - assertAll( - () -> assertThat(constraintViolations).hasSize(1), - () -> assertThat(constraintViolations.iterator().next().getMessage()).isEqualTo("이름은 필수 입니다.") - ); + assertThat(constraintViolations).hasSize(1); } @ParameterizedTest @@ -66,10 +63,7 @@ class UserTest { Set> constraintViolations = validator.validate(user); // then - assertAll( - () -> assertThat(constraintViolations).hasSize(1), - () -> assertThat(constraintViolations.iterator().next().getMessage()).isEqualTo("이메일은 필수 입니다.") - ); + assertThat(constraintViolations).hasSize(1); } @ParameterizedTest @@ -83,10 +77,7 @@ class UserTest { Set> constraintViolations = validator.validate(user); // then - assertAll( - () -> assertThat(constraintViolations).hasSize(1), - () -> assertThat(constraintViolations.iterator().next().getMessage()).isEqualTo("이메일이 올바르지 않습니다.") - ); + assertThat(constraintViolations).hasSize(1); } @ParameterizedTest @@ -100,10 +91,7 @@ class UserTest { Set> constraintViolations = validator.validate(user); // then - assertAll( - () -> assertThat(constraintViolations).hasSize(1), - () -> assertThat(constraintViolations.iterator().next().getMessage()).isEqualTo("패스워드는 필수 입니다.") - ); + assertThat(constraintViolations).hasSize(1); } @Test @@ -116,10 +104,7 @@ class UserTest { Set> constraintViolations = validator.validate(user); // then - assertAll( - () -> assertThat(constraintViolations).hasSize(1), - () -> assertThat(constraintViolations.iterator().next().getMessage()).isEqualTo("사용자 등급은 필수 입니다.") - ); + assertThat(constraintViolations).hasSize(1); } @ParameterizedTest @@ -133,10 +118,7 @@ class UserTest { Set> constraintViolations = validator.validate(user); // then - assertAll( - () -> assertThat(constraintViolations).hasSize(1), - () -> assertThat(constraintViolations.iterator().next().getMessage()).isEqualTo("휴대번호는 필수 입니다.") - ); + assertThat(constraintViolations).hasSize(1); } @ParameterizedTest @@ -151,7 +133,6 @@ class UserTest { // then assertThat(constraintViolations).hasSize(1); - assertThat(constraintViolations.iterator().next().getMessage()).isEqualTo("휴대번호가 올바르지 않습니다."); } }