New Score :0
High Score :0
Run Best
NICE BUSINESS TYPE INDICATOR
3. ๊ธ์ ์ ์น๊ตฌ์๊ฒ ๋น๋ ธ๋๋ฐ ์ค๋์ด ๋์ ์ฃผ๊ธฐ๋ก ํ๋ .. ๊ทธ๋ฐ๋ฐ ์นด๋๊ฐ์ ๋ด์ผํ๋ ๋ ๋ ์ค๋์ธ๋ฐ... ์ด๊ฑธ ์ด์ฉ๋...
4. ์ฐ๋ฆฌ ํ์ฌ๋ ์ค์ํ ์์ฌ ๊ฒฐ์ ์ ํ ๋?
5. ์ด์ฌํ ์ผํ ๋๋ฅผ ์ํ ์ ๋ฌผ์ ์ฃผ๊ณ ์ถ๋ค. ์ด๋ค๊ฒ ์ข์๊น?
6. ์ํ์์ ํฌ์์ํ์ ์ถ์ฒ๋ฐ์๋ค. ์ด๋ค๊ฑธ ๊ฐ์ ํ์ง?
7. ํ์ฌ์์์ ๋๋?
8. ๊ฟ์์ ๊นจ์ด๋๋ 20๋ ์ ์ผ๋ก ๋์๊ฐ๋ค. ๋น์ ์ด ์ ์ผ ๋จผ์ ํ๋์ผ์?
9. ๋ด๊ฐ ์ธ์ฌ ๋ด๋น์๋ผ๋ฉด ์ ๊ท ์ ์ฌ์ ์ฑ์ฉ ์ ์ ์ผ ์ค์ํ๊ฒ ๋ณด๋๊ฒ์?
10. ํ์ฌ์ ์ ๋ง ์ซ์ดํ๋ ๋๋ฃ๊ฐ ์๋ค๋ฉด?
11. ๊ฐ๋ํ ์ง์ ๊ฐ์ฅ์ด ๋์๋ค.. ์๋ ์ ์์ผ ๋ ์ ๋ฌผ์?
12. ํ์ ํ์ฌ ์ถ๊ทผ ์คํ์ผ์?
13.ํ์ฌ ์ฒด์ก๋ํ ํ๋ ๋ ์ด๋ค. ์ค๋ ๋ญํ์ง?
14. ๋์ ์ ๋ฌด ์คํ์ผ์?
Spring Boot 3.1.0 ๋ฒ์ ์ด ๋ฆด๋ฆฌ์ฆ ๋์์ต๋๋ค.

๋ฌด์์ด ๋ฐ๋์์๊ผฌ?
v3.1.0-M2 Pre-release
โญ New Features
- ํ ์คํธ ์ปจํ ์ด๋ ์ ๋ํ ์ข ์์ฑ ๊ด๋ฆฌ ์ ๊ณต #34712
- GraphQL ํ์ด์ง ๋งค๊น ๋ฐ ์ ๋ ฌ ์ ๋ํ ์ง์ ๊ตฌ์ฑ #34677
- Testcontainers ๊ด๋ฆฌ ์ปจํ ์ด๋ ์์ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ํ ์คํธ์ ํ์ํ ์์ฉ๊ตฌ ์ค์ด๊ธฐ #34658
- ์๋ ๊ตฌ์ฑ์ด ๊ตฌ์ฑ ์์ฑ ์ด์ธ์ ์์ค์์ ์๋น์ค ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋๋ก ํ์ฉ #34657
- ์ด๊ท ๊ฐ๋ฅํ ๋ฐ์ดํฐ ์ถ๊ฐ์ด๊ท ๊ฐ #34615
- @GraphQlExceptionHandler ๋ฉ์๋ ์ ๋ํ ์์ธ ํ์ธ์ ๊ตฌ์ฑ #34526
- Spring Kafka ์ฌ์๋ ๊ตฌ์ฑ์์ ๊ณ ์ ์ง์ฐ์ ๋ํ ๋จ์ผ ํญ๋ชฉ์์ ๋์ผํ ๊ฐ๊ฒฉ์ ๋ํ ๋จ์ผ ํญ๋ชฉ์ผ๋ก ์ ํํฉ๋๋ค. #34504
- ํ๋ก์ฑ์ ํ์ฉํ๋๋ก ProblemDetailsExceptionHandler ํด๋์ค์์ final์ ์ ๊ฑฐํฉ๋๋ค. #34503
- Git ์ปค๋ฐ ID Maven ํ๋ฌ๊ทธ์ธ์ ๋ฒ์ ์์ฑ ์ด๋ฆ์ git-commit-id-plugin.version์์ git-commit-id-maven-plugin.version #34397๋ก ๋ฐ๊ฟ๋๋ค.
- ๋น๋ ์ ๋ณด ๊ฑด๋๋ฐ๊ธฐ ์ง์ ์ถ๊ฐ #34393
- CNB ํ๋ซํผ API 0.11 #34383์ ๋ํ ์ง์ ์ถ๊ฐ
- ๋ถ๊ฐ๋ฅํ JDK API ์ฌ์ฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์คํ๋ง ๋ถํธ ์คํํฐ ๋ถ๋ชจ์์ maven.compiler.release๋ฅผ ๊ตฌ์ฑ #34365
- JoranConfigurators๋ฅผ ๋ก๊ทธ๋ฐฑ #34361์ ๋ฏธ๋ฆฌ ์ ๋ฌํ ์ ์๋๋ก ์ง์์ ๋๋๋ฆฝ๋๋ค.
- Add management.wavefront.application.custom-tags property #34223
- ํ ๋ผ ํ ํ๋ฆฟ์ ์ฌ์ฉ์ ์ ์ ํ ์ ์๋๋ก ํ ๋ผ ํ ํ๋ฆฟ ์ฌ์ฉ์ ์ง์ ํ๋ก๊ทธ๋จ ์ถ๊ฐ #34050
- ์คํ๋ง ๊ถํ ๋ถ์ฌ ์๋ฒ ์ง์ ์ถ๊ฐ #34003
๐ Bug Fixes
- @EntityScan ์ฌ์ฉํ๋ฉด AOT ์ธ์คํด์ค ๊ณต๊ธ์ ์ฝ๋ ์์ฑ ์ค๋ฅ #34731์ด ๋ฐ์ํฉ๋๋ค.
- ํฌํจ๋ ์น ์๋ฒ๊ฐ ๊ตฌ์ฑ ๋์ง ์์ ๊ฒฝ์ฐ EmbeddedWebServerFactoryCustomizerAutoConfiguration ์ด ์คํ๋์ง ์์์ผ ํฉ๋๋ค. #34660
- ํด๋์ค ๊ฒฝ๋ก์ '.' ๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ๋์ผํ ํ์ผ์ ๋ ๋ฒ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. #34618
- @ConfigurationProperties ๋ณ๊ฒฝ ๊ฐ๋ฅํ Kotlin ๋ฐ์ดํฐ ํด๋์ค ์์ ๋ ์ด์ ์๋ํ์ง ์์ต๋๋ค. #34611
- SnakeYAML 2.0 #34516์ ์ฌ์ฉํ ๋ ์์ฉ ํ๋ก๊ทธ๋จ .yml๋ก๋๊ฐ ์คํจํ๊ณ NoSuchMethodError
- ์ด๋ฏธ์ง ๋น๋ํฉ์ด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ podman์ ์ฌ์ฉํ ์ด๋ฏธ์ง ๋น๋๊ฐ ์คํจํฉ๋๋ค. #34496
- Maven ํ๋ฌ๊ทธ์ธ์ ์ถ๋ ฅ ํ์ ์คํฌํ๊ฐ ์ฌ์ฉ๋ ๋ ์๊ฐ๋ - ๋ก์ปฌ ํ์ ์คํฌํ๋ฅผ ์ฌ์ฉํฉ๋๋ค # 34431
- Spring Boot 3์ ๋นจ๊ฐ์ ๋ฉํธ๋ฆญ ์ฌ์ฉ์ ์ง์ ํ๊ทธ ํค #34425๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ๊ตฌ์ฑ ์์ฑ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
- org.springframework.boot.web.embedded.jetty.GracefulShutdown์ด ์๋ชป๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ฑฐ #34420์ ๋ง๋ญ๋๋ค.
- ์ด๊ธฐํ๋ ์ค์ฒฉ ๋ ์ฝ๋ ์์ฑ ๊ฐ์ด ์๋ @ConfigurationProperties ๋ ์ด์ ๋ฐ์ธ๋ฉ ๋์ง ์์ #34411
- ์ฌ์ฉ์ ์ง์ ConfigDataLocationResolver/ConfigDataLoader๊ฐ ์คํ๋ง ๋ถํธ ๊ฐ๋ฐ ๋๊ตฌ #3์ ๊ฒฐํฉ๋ ๋ 0.34375.x์์ ์คํจํฉ๋๋ค.
- defaultTracingObservationHandler๊ฐ ๋ฌธ์ํ ๋ ๋๋ก ์ ๋ ฌ๋์ง ์์์ต๋๋ค. #34370
๐ Documentation
- Java 20 #34727์ ๋ํ ๋ฌธ์ ์ง์
- ๋ฐฐ์น ๋ฌธ์์ ์คํ: ์ปจํ ์คํธ ๋์ ์ฝํ ์ธ #34707
- WebFlux #34706์ ์ฌ์ฉ์ ์ง์ ์ค๋ฅ ํ์ด์ง์ ๋ํ ๊ท์น ์ค๋ช
- ์์ ์คํ๊ธฐ์์ฉ ํ๋ก๊ทธ๋จ ๋ฌ๋ ์์ Javadoc ์์ #34604
- ์ด์ API #34603์ ๋ํ ๋ ๊ฐ์ ์ฐธ์กฐ ์ ๋ฐ์ดํธ
- podman ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ๋น๋ ๊ตฌ์ฑ์ ์ํ ์์ผ ์์น๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๋ฌธ์ํ #34476
- Gradle 8 ์ ๋ํ ๋ฌธ์ ์ง์ #34463
- ๋ฐฐ์น ๋ฌธ์ ์ ๋ฐ์ดํธ #34456
- ์ฅ์ ์กฐ์น ์คํํฐ #34423์ ๋งํฌ ์ถ๊ฐ
- OpenTelemetry ์น์ #34416์์ ์คํ ์์
- ์์ฑ ์ํธํ #34415์ ์คํ ์์
- ์คํ๋ง ๋ถํธ Gradle ํ๋ฌ๊ทธ์ธ ๋ฌธ์์์ ํ๋ฌ๊ทธ์ธ DSL์ ์ผ๊ด๋๊ฒ ์ฌ์ฉ #34392
๐จ Dependency Upgrades
- Upgrade to Byte Buddy 1.14.2 #34679
- Upgrade to Caffeine 3.1.5 #34571
- Upgrade to Couchbase Client 3.4.4 #34680
- Upgrade to Dropwizard Metrics 4.2.18 #34681
- Upgrade to Flyway 9.15.2 #34573
- Upgrade to GraphQL Java 20.1 #34715
- Upgrade to Groovy 4.0.10 #34683
- Upgrade to Infinispan 14.0.7.Final #34684
- Upgrade to Jedis 4.3.2 #34700
- Upgrade to Jetty 11.0.14 #34575
- Upgrade to Jetty Reactive HTTPClient 3.0.8 #34574
- Upgrade to jOOQ 3.18.1 #34701
- Upgrade to Json-smart 2.4.10 #34685
- Upgrade to Liquibase 4.20.0 #34578
- Upgrade to Logback 1.4.6 #34686
- Upgrade to MariaDB 3.1.3 #34716
- Upgrade to Maven Compiler Plugin 3.11.0 #34579
- Upgrade to Maven Help Plugin 3.4.0 #34687
- Upgrade to Micrometer 1.11.0-M2 #34546
- Upgrade to Micrometer Tracing 1.1.0-M2 #34547
- Upgrade to Netty 4.1.90.Final #34688
- Upgrade to OpenTelemetry 1.24.0 #34581
- Upgrade to Oracle R2DBC 1.1.1 #34723
- Upgrade to Postgresql 42.6.0 #34689
- Upgrade to Rabbit AMQP Client 5.17.0 #34702
- Upgrade to Reactor Bom 2022.0.5 #34553
- Upgrade to Selenium HtmlUnit 4.8.1.1 #34690
- Upgrade to SLF4J 2.0.7 #34691
- Upgrade to Spring AMQP 3.0.3 #34610
- Upgrade to Spring Data Bom 2023.0.0-M3 #34548
- Upgrade to Spring Framework 6.0.7 #34554
- Upgrade to Spring GraphQL 1.2.0-M1 #34550
- Upgrade to Spring HATEOAS 2.1.0-M1 #34703
- Upgrade to Spring Integration 6.1.0-M2 #34552
- Upgrade to Spring Kafka 3.0.5 #34555
- Upgrade to Spring Retry 2.0.1 #34556
- Upgrade to Spring Security 6.1.0-M2 #34549
- Upgrade to Spring Session 3.1.0-M1 #34551
- Upgrade to SQLite JDBC 3.41.2.0 #34725
- Upgrade to Tomcat 10.1.7 #34582
- Upgrade to UnboundID LDAPSDK 6.0.8 #34583
์๋ก์ด ๊ธฐ๋ฅ:
- Testcontainer์ ๋ํ ์ข ์์ฑ ๊ด๋ฆฌ
- GraphQL ํ์ด์ง ๋งค๊น ๋ฐ ์ ๋ ฌ ๊ตฌ์ฑ ์ง์
- Testcontainers ๊ด๋ฆฌ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ ํ ์คํธ๋ฅผ ์ํ ์ถ์๋ ์์ฉ๊ตฌ
- ์๋ ๊ตฌ์ฑ์ด ๊ตฌ์ฑ ์์ฑ ์ด์ธ์ ์์ค์์ ์๋น์ค ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋๋ก ํ์ฉ
- SanitizedValue์ ํจ๊ป SanitizableData ์ถ๊ฐ
- @GraphQlExceptionHandler ๋ฉ์๋์ ๋ํด ๊ตฌ์ฑ๋ ์์ธ ํด๊ฒฐ ํ๋ก๊ทธ๋จ
- Spring Kafka ์ฌ์๋ ๊ตฌ์ฑ์์ ๊ณ ์ ์ง์ฐ์ ๋ํ ๋จ์ผ ์ฃผ์ ์์ ๋์ผํ ๊ฐ๊ฒฉ์ ๋ํ ๋จ์ผ ์ฃผ์ ๋ก ์ ํ๋จ
- ํ๋ก์ฑ์ ํ์ฉํ๊ธฐ ์ํด ProblemDetailsExceptionHandler ํด๋์ค์์ ์ต์ข ์ ๊ฑฐ๋จ
- Git Commit ID Maven ํ๋ฌ๊ทธ์ธ์ ๋ฒ์ ์์ฑ ์ด๋ฆ ๋ณ๊ฒฝ
- ๋น๋ ์ ๋ณด ๊ฑด๋๋ฐ๊ธฐ ์ง์ ์ถ๊ฐ
- CNB ํ๋ซํผ API 0.11์ ๋ํ ์ง์ ์ถ๊ฐ
- ๋ถ๊ฐ๋ฅํ JDK API ์ฌ์ฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด spring-boot-starter-parent์ maven.compiler.release ๊ตฌ์ฑ
- JoranConfigurators๊ฐ Logback์ ๋ฏธ๋ฆฌ ์ ๋ฌ๋ ์ ์๋๋ก ์ง์์ ๋๋๋ ธ์ต๋๋ค.
- management.wavefront.application.custom-tags ์์ฑ ์ถ๊ฐ
- RabbitTemplates์ ์ฌ์ฉ์ ์ง์ ์ ํ์ฉํ๋ RabbitTemplateCustomizer ์ถ๊ฐ
- Spring Authorization Server ์ง์ ์ถ๊ฐ
๋ฒ๊ทธ ์์ :
- @EntityScan์ผ๋ก ์ธํ AOT ์ธ์คํด์ค ๊ณต๊ธ์ ์ฒด ์ฝ๋ ์์ฑ ์ค๋ฅ ์์
- ์๋ฒ ๋๋ ์น ์๋ฒ๊ฐ ๊ตฌ์ฑ๋์ง ์์ ๊ฒฝ์ฐ EmbeddedWebServerFactoryCustomizerAutoConfiguration์ด ์คํ๋์ง ์๋๋ก ์์
- ํด๋์ค ๊ฒฝ๋ก์ '.'๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ๋์ผํ ํ์ผ์ ๋ ๋ฒ ๊ฐ์ ธ์ค์ง ์๋๋ก StandardConfigDataResource๋ฅผ ์์ ํ์ต๋๋ค.
- ๋ณ๊ฒฝ ๊ฐ๋ฅํ Kotlin ๋ฐ์ดํฐ ํด๋์ค์ @ConfigurationProperties ์์
- SnakeYAML 2.0์ ์ฌ์ฉํ ๋ NoSuchMethodError๋ก application.yml์ ๋ก๋ํ๋ ๋ฌธ์ ์์
- ์ด๋ฏธ์ง ๋น๋ํฉ์ด ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ podman์ผ๋ก ์ด๋ฏธ์ง ๋น๋๋ฅผ ์์ ํ์ต๋๋ค.
- outputTimestamp๊ฐ ์ฌ์ฉ๋ ๋ UTC ํ์์คํฌํ๋ฅผ ์ฌ์ฉํ๋๋ก Maven ํ๋ฌ๊ทธ์ธ ์์
- Spring Boot 3์์ ๋นจ๊ฐ์ ๋ฉํธ๋ฆญ ์ฌ์ฉ์ ์ง์ ํ๊ทธ ํค๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ๊ตฌ์ฑ ์์ฑ ์ถ๊ฐ
- org.springframework.boot.web.embedded.jetty.GracefulShutdown์ด ์ฌ๋ฐ๋ฅธ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ฑฐ๋ฅผ ์์ฑํ๋๋ก ์์
- ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐ์ธ๋ฉ๋๋๋ก ์ด๊ธฐํ๋ ์ค์ฒฉ ๋ ์ฝ๋ ์์ฑ ๊ฐ์ด ์๋ @ConfigurationProperties๋ฅผ ์์ ํ์ต๋๋ค.
- 3.0.x์์ spring-boot-devtools์ ํจ๊ป ์๋ํ๋๋ก ์ปค์คํ ConfigDataLocationResolver/ConfigDataLoader๋ฅผ ์์ ํ์ต๋๋ค.
- ๋ฌธ์ํ๋ ๋๋ก ์ฃผ๋ฌธ๋๋๋ก defaultTracingObservationHandler ์์
์ ์ ์๋ฅ ๋น์น:
- Java 20 ๋ฐ Gradle 8์ ๋ํ ๋ฌธ์ํ๋ ์ง์
- WebFlux์ ์ฌ์ฉ์ ์ง์ ์ค๋ฅ ํ์ด์ง์ ๋ํ ๋ช ํํ ๊ท์น
- ์ ๋ฐ์ดํธ๋ ๋ฐฐ์น ๋ฌธ์
- ์ฅ์ ์กฐ์น ์คํํฐ์ ๋ํ ๋งํฌ ์ถ๊ฐ
- ๋ค์ํ ์น์ ์ ์คํ ์์
์ข ์์ฑ ์ ๊ทธ๋ ์ด๋:
Byte Buddy, Caffeine, Couchbase Client, Dropwizard Metrics, Flyway, GraphQL Java, Groovy, Infinispan, jOOQ, Json-smart, Liquibase, Logback, MariaDB, Maven Compiler Plugin, Maven Help Plugin, Micrometer, Netty, OpenTelemetry, Oracle R2DBC, Postgresql, Rabbit AMQP Client, Reactor Bom, Selenium HtmlUnit, SLF4J, Spring AMQP, Spring Data Bom, Spring Framework, Spring GraphQL, Spring HATEOAS, Spring Integration, Spring Kafka, Spring Retry, Spring Security, Spring Session, SQLite JDBC, Tomcat ๋ฐ UnboundID LDAPSDK.
Java ์์ ์์
์ด ์์ ์์๋ Testcontainers ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ @Container ์ฃผ์์ ์ฌ์ฉํ์ฌ ํ ์คํธ๊ฐ ์คํ๋๊ธฐ ์ ์ ์์๋๊ณ ํ ์คํธ๊ฐ ์๋ฃ๋๋ฉด ์ค์ง๋๋ PostgreSQL ์ปจํ ์ด๋๋ฅผ ์ ์ํฉ๋๋ค. ๋ํ ํ ์คํธ ํด๋์ค์์ Testcontainers ์ง์์ ํ์ฑํํ๊ธฐ ์ํด @Testcontainers ์ฃผ์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก Testcontainer๋ฅผ ์ฌ์ฉํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ ์ดํ๋ โโ์ผ๊ด๋๊ณ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ํ ์คํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.utility.DockerImageName;
@Testcontainers
@SpringBootTest
public class MyServiceTest {
@Container
static PostgreSQLContainer<?> postgreSQLContainer =
new PostgreSQLContainer<>(DockerImageName.parse("postgres:latest"))
.withDatabaseName("mydb")
.withUsername("username")
.withPassword("password");
@Autowired
private MyService myService;
@Test
void testMyService() {
// use myService to test functionality
}
}
Kotlin ์์
์ด ์์์๋ 'companion object' ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ Testcontainers ์ปจํ ์ด๋๋ฅผ ์ ์ ํ๋๋ก ์ ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ myService ํ๋๋ฅผ ์ ์ธํ๊ธฐ ์ํด lateinit var ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. Spring์ ์์กด์ฑ ์ฃผ์ ๋ฉ์ปค๋์ฆ์ ์ํด ์ฑ์์ง ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ฌํ ์ฌ์ํ ๊ตฌ๋ฌธ ์ฐจ์ด๋ฅผ ์ ์ธํ๋ฉด Kotlin ์ฝ๋๋ ์ด์ ์์ ์ Java ์ฝ๋์ ๋งค์ฐ ์ ์ฌํฉ๋๋ค.
import org.junit.jupiter.api.Test
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.testcontainers.containers.PostgreSQLContainer
import org.testcontainers.junit.jupiter.Container
import org.testcontainers.junit.jupiter.Testcontainers
import org.testcontainers.utility.DockerImageName
@Testcontainers
@SpringBootTest
class MyServiceTest {
companion object {
@Container
val postgreSQLContainer: PostgreSQLContainer<*> = PostgreSQLContainer<Nothing>(DockerImageName.parse("postgres:latest"))
.withDatabaseName("mydb")
.withUsername("username")
.withPassword("password")
}
@Autowired
lateinit var myService: MyService
@Test
fun testMyService() {
// use myService to test functionality
}
}
์ ๋ฐ์ ์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ์๋ก์ด ๊ธฐ๋ฅ, ๋ฒ๊ทธ ์์ ๋ฐ ์ข ์์ฑ ์ ๊ทธ๋ ์ด๋๋ฅผ ๋์ ํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ์ด๋ฌํ ์ ๋ฐ์ดํธ๋ Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ, ์์ ์ฑ ๋ฐ ๋ณด์์ ๊ฐ์ ํ๊ณ ์ต์ ๋ฒ์ ์ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ต์ ์ํ๋ฅผ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. Testcontainers ์ข ์์ฑ ๊ด๋ฆฌ ๋ฐ Spring Authorization Server ์ง์์ ์ถ๊ฐ๋ ๊ฐ๊ฐ ํ ์คํธ๋ฅผ ๋จ์ํํ๊ณ Spring Boot ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ผ๋ฏ๋ก ํนํ ์ฃผ๋ชฉํ ๋งํฉ๋๋ค.