diff --git a/build.gradle b/build.gradle index a1766ad..2d26eef 100644 --- a/build.gradle +++ b/build.gradle @@ -18,22 +18,45 @@ repositories { mavenCentral() } +ext { + // https://spring.io/projects/spring-cloud + springCloudVersion = 'Finchley.RELEASE' + +} + +//dependencyManagement { +// imports { +// mavenBom "org.springframework.cloud" +// } +//} + dependencies { // Spring Batch implementation 'org.springframework.boot:spring-boot-starter-batch' // Spring Data JPA implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + // validation + implementation 'org.springframework.boot:spring-boot-starter-validation' // h2 DB implementation 'com.h2database:h2' - // 스프링 웹 + // web implementation 'org.springframework.boot:spring-boot-starter-web' + // 롬복 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' + // mariadb implementation 'org.mariadb.jdbc:mariadb-java-client:2.7.4' +// https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign +// implementation 'org.springframework.cloud:spring-cloud-starter-openfeign:4.1.2' + + + // swagger + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.4' + testImplementation 'org.springframework.boot:spring-boot-starter-test' } diff --git a/src/main/java/com/example/play_ground/spring/validation/Bar.java b/src/main/java/com/example/play_ground/spring/validation/Bar.java new file mode 100644 index 0000000..97f5b3e --- /dev/null +++ b/src/main/java/com/example/play_ground/spring/validation/Bar.java @@ -0,0 +1,12 @@ +package com.example.play_ground.spring.validation; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; + +public record Bar( + @NotNull + String bar, + @Valid + FooBar fooBar +) { +} diff --git a/src/main/java/com/example/play_ground/spring/validation/Foo.java b/src/main/java/com/example/play_ground/spring/validation/Foo.java new file mode 100644 index 0000000..f3ccf5b --- /dev/null +++ b/src/main/java/com/example/play_ground/spring/validation/Foo.java @@ -0,0 +1,15 @@ +package com.example.play_ground.spring.validation; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import org.springframework.validation.annotation.Validated; + +@Validated +public record Foo( + @NotNull + String foo, + @NotNull + @Valid + Bar bar +) { +} diff --git a/src/main/java/com/example/play_ground/spring/validation/FooBar.java b/src/main/java/com/example/play_ground/spring/validation/FooBar.java new file mode 100644 index 0000000..b4132a5 --- /dev/null +++ b/src/main/java/com/example/play_ground/spring/validation/FooBar.java @@ -0,0 +1,9 @@ +package com.example.play_ground.spring.validation; + +import jakarta.validation.constraints.NotNull; + +public record FooBar( + @NotNull + String fooBar +) { +} diff --git a/src/main/java/com/example/play_ground/spring/validation/FooBarClient.java b/src/main/java/com/example/play_ground/spring/validation/FooBarClient.java new file mode 100644 index 0000000..92412a7 --- /dev/null +++ b/src/main/java/com/example/play_ground/spring/validation/FooBarClient.java @@ -0,0 +1,13 @@ +package com.example.play_ground.spring.validation; + +import jakarta.validation.Valid; +import lombok.extern.log4j.Log4j2; +import org.springframework.validation.annotation.Validated; + +@Log4j2 +@Validated +public class FooBarClient { + void foo(@Valid Foo foo){ + log.info(foo); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 7af5041..c3f6ce0 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,9 +1,3 @@ -spring: - profiles: - active: mariadb - ---- - spring: profiles: active: local @@ -16,27 +10,6 @@ spring: batch: job: enabled: true - ---- - -spring: - profiles: - active: mariadb - datasource: - hikari: - jdbc-url: jdbc:mariadb://localhost:3306/commerce - username: root - password: 221031 - driver-class-name: org.mariadb.jdbc.Driver - jpa: - hibernate: - ddl-auto: create - properties: - hibernate: - show_sql: true - format_sql: true - batch: - job: - enabled: true - jdbc: - initialize-schema: always + h2: + console : + enabled: true \ No newline at end of file diff --git a/src/test/java/com/example/play_ground/spring/validation/FooBarClientTest.java b/src/test/java/com/example/play_ground/spring/validation/FooBarClientTest.java new file mode 100644 index 0000000..e4e3ef2 --- /dev/null +++ b/src/test/java/com/example/play_ground/spring/validation/FooBarClientTest.java @@ -0,0 +1,27 @@ +package com.example.play_ground.spring.validation; + +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validation; +import jakarta.validation.Validator; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; +class FooBarClientTest { + Validator validator; + @BeforeEach + void setUp() { + validator = Validation.buildDefaultValidatorFactory().getValidator(); + } + + @Test + void validated() { + Bar bar = new Bar("bar", new FooBar(null)); + Foo foo = new Foo("foo", bar); + + Set> validate = validator.validate(foo); + assertThat(validate).isNotEmpty(); + } +} \ No newline at end of file