{"id":394,"date":"2023-05-19T07:28:34","date_gmt":"2023-05-18T22:28:34","guid":{"rendered":"https:\/\/hirabay.net\/?p=394"},"modified":"2023-07-03T22:40:53","modified_gmt":"2023-07-03T13:40:53","slug":"springboot-3-0-to-3-1-%e3%83%a1%e3%83%a2","status":"publish","type":"post","link":"https:\/\/hirabay.net\/?p=394","title":{"rendered":"SpringBoot 3.0 to 3.1\u00a0\u30e1\u30e2"},"content":{"rendered":"\n<p>SpringBoot 3.1\u304cGA\u3068\u306a\u308a\u307e\u3057\u305f<br><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/spring-projects\/spring-boot\/wiki\/Spring-Boot-3.1-Release-Notes\" target=\"_blank\">Release Notes<\/a>\u3092\u53c2\u8003\u306b3.0\u7cfb\u304b\u3089\u306e\u5909\u66f4\u70b9\u3092\u307e\u3068\u3081\u307e\u3059<br>\u81ea\u5206\u304c\u79fb\u884c\u3059\u308b\u3068\u304d\u306b\u95a2\u4fc2\u306e\u3042\u308b\u3082\u306e\u3084\u8208\u5473\u304c\u3042\u308b\u3082\u306e\u304c\u4e2d\u5fc3\u3068\u306a\u308a\u307e\u3059\u304c\u3054\u5bb9\u8d66\u304f\u3060\u3055\u3044\ud83d\ude47\u200d\u2642\ufe0f<\/p>\n\n\n\n<p>\u95a2\u9023\u8a18\u4e8b\u306f\u3053\u3061\u3089<\/p>\n\n\n<a class=\"linkto table\" href=\"https:\/\/hirabay.net\/?p=81\"><span class=\"tbcell tbimg\"><img loading=\"lazy\" decoding=\"async\" width=\"160\" height=\"160\" src=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/641f4e20d7d1577faae9ce68813c10e2-160x160.png\" class=\"attachment-thumb-160 size-thumb-160 wp-post-image\" alt=\"\" srcset=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/641f4e20d7d1577faae9ce68813c10e2-160x160.png 160w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/01\/641f4e20d7d1577faae9ce68813c10e2-150x150.png 150w\" sizes=\"auto, (max-width: 160px) 100vw, 160px\"><\/span><span class=\"tbcell tbtext\"><time class=\"pubdate sng-link-time dfont\" itemprop=\"datePublished\" datetime=\"2023-01-18\">2023\u5e741\u670818\u65e5<\/time>SpringBoot Update\u307e\u3068\u3081<\/span><\/a>\n\n\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/c4179872\/public_html\/hirabay.net\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>110<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/c4179872\/public_html\/hirabay.net\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>115<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/c4179872\/public_html\/hirabay.net\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>122<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">\n  <li class=\"first\">\n    <a href=\"#i-0\">HttpClient4\u304c\u4f9d\u5b58\u304b\u3089\u9664\u5916<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-1\">Jackson 2.15<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-2\">Testcontainers\u304cspring-boot-dependencies\u306e\u7ba1\u7406\u5bfe\u8c61\u306b<\/a>\n  <\/li>\n  <li>\n    <a href=\"#i-3\">\uff08\u65b0\u6a5f\u80fd\uff09Service Connections<\/a>\n  <\/li>\n  <li class=\"last\">\n    <a href=\"#i-4\">\u958b\u767a\u6642\u306eDocker\u5229\u7528<\/a>\n    <ul class=\"menu_level_1\">\n      <li class=\"first\">\n        <a href=\"#i-5\">testcontainers<\/a>\n      <\/li>\n      <li>\n        <a href=\"#i-6\">docker-compose<\/a>\n      <\/li>\n      <li class=\"last\">\n        <a href=\"#i-8\">docker-compose\u9023\u643a\u3068testcontainer\u3069\u3063\u3061\u3092\u4f7f\u3046\uff1f<\/a>\n      <\/li>\n    <\/ul>\n  <\/li>\n<\/ul>\n\n      \n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\"><a href=\"https:\/\/github.com\/spring-projects\/spring-boot\/wiki\/Spring-Boot-3.1-Release-Notes#dependency-management-for-apache-httpclient-4\" target=\"_blank\" rel=\"noreferrer noopener\">HttpClient4\u304c\u4f9d\u5b58\u304b\u3089\u9664\u5916<\/a><\/h2>\n\n\n\n<p>HttpClient4\u304c\u4f9d\u5b58\u304b\u3089\u9664\u5916\u3055\u308c\u308b\u305f\u3081\u3001RestTemplate\u3067HttpClient4\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u306fHttpClient5\u3078\u306e\u79fb\u884c\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u57fa\u672c\u3001SpringBoot3\u3078\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3057\u305f\u3068\u304d\u306bHttpClient5\u3078\u306e\u79fb\u884c\u3092\u884c\u3063\u3066\u3044\u308b\u306f\u305a\u306a\u306e\u3067\u5bfe\u5fdc\u4e0d\u8981\u3060\u3068\u601d\u3044\u307e\u3059\u304c\u3001<br>\u79fb\u884c\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3059\u308b\u306e\u3067\u3001\u30a8\u30e9\u30fc\u306e\u767a\u751f\u30d9\u30fc\u30b9\u3067\u5bfe\u5fdc\u3059\u308c\u3070\u3088\u3044\u306e\u304b\u306a\u3068<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-1\"><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/spring-projects\/spring-boot\/wiki\/Spring-Boot-3.1-Release-Notes\" target=\"_blank\">Jackson 2.15<\/a><\/h2>\n\n\n\n<p>Jackson\u306eversion\u304c2.15\u306b\u4e0a\u304c\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>2.15\u3067\u306flimit\u304c\u5b9a\u7fa9\u3055\u308c\u308b\u3088\u3046\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u5177\u4f53\u7684\u306alimit\u306f<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u5bfe\u8c61<\/th><th>limit<\/th><\/tr><\/thead><tbody><tr><td>\u6574\u6570\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570<\/td><td>1000\u6841<\/td><\/tr><tr><td>\u6587\u5b57\u5217<\/td><td>5,000,000 byte \/ 5,000,000 char<\/td><\/tr><tr><td>\u30cd\u30b9\u30c8\u306e\u6df1\u3055<\/td><td>1000<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u3068\u306a\u3063\u3066\u3044\u3066\u3001\u3088\u307b\u3069\u5927\u304d\u306ajson\u3092\u6271\u308f\u306a\u3044\u9650\u308a\u554f\u984c\u306b\u306a\u3089\u306a\u305d\u3046\u3067\u3059\u304c\u3001\u5236\u7d04\u304c\u8ffd\u52a0\u3055\u308c\u305f\u3053\u3068\u81ea\u4f53\u306f\u8a8d\u8b58\u3057\u3066\u304a\u3044\u305f\u65b9\u304c\u3088\u3055\u305d\u3046\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-2\"><a href=\"https:\/\/github.com\/spring-projects\/spring-boot\/wiki\/Spring-Boot-3.1-Release-Notes#dependency-management-for-apache-httpclient-4\" target=\"_blank\" rel=\"noreferrer noopener\">Testcontainers\u304cspring-boot-dependencies\u306e\u7ba1\u7406\u5bfe\u8c61\u306b<\/a><\/h2>\n\n\n\n<p>testcontainers\u304cspring-boot-dependencies\u306b\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p>\u52d5\u4f5c\u78ba\u8a8d\u6e08\u307f\u306eversion\u304c\u81ea\u52d5\u3067\u4f7f\u308f\u308c\u308b\u3088\u3046\u306b\u306a\u308b\u306e\u3067version\u60c5\u5831\u306f\u6d88\u3057\u3066\u304a\u304d\u307e\u3057\u3087\u3046\uff01<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-groovy\" data-file=\"\u30b5\u30f3\u30d7\u30eb\" data-lang=\"Groovy\"><code>dependencies {\n  \/\/ \u5909\u66f4\u524d\n\t\/\/ testImplementation 'org.testcontainers:junit-jupiter:1.18.0'\n  \/\/ \u5909\u66f4\u5f8c\n\ttestImplementation 'org.testcontainers:junit-jupiter'\n}<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-3\"><a href=\"https:\/\/github.com\/spring-projects\/spring-boot\/wiki\/Spring-Boot-3.1-Release-Notes#dependency-management-for-apache-httpclient-4\" target=\"_blank\" rel=\"noreferrer noopener\">\uff08\u65b0\u6a5f\u80fd\uff09Service Connections<\/a><\/h2>\n\n\n\n<p>docker-compose\u3084testcontainer\u5229\u7528\u6642\u306b\u3001docker\u30b3\u30f3\u30c6\u30ca\u3068\u306e\u63a5\u7d9a\u3059\u308b\u305f\u3081\u306e\u60c5\u5831\u3092\u81ea\u52d5\u3067Bean\u767b\u9332\u3057\u3066\u304f\u308c\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305d\u3057\u3066\u3001\u305d\u306eBean\u767b\u9332\u3055\u308c\u305f\u60c5\u5831\u304c\u3001\u8a2d\u5b9a\u3057\u305f\u30d7\u30ed\u30d1\u30c6\u30a3\u3088\u308a\u3082\u512a\u5148\u7684\u306b\u8aad\u307f\u8fbc\u307e\u308c\u308b\u305f\u3081\u3001\u8d77\u52d5\u3057\u305f\u30b3\u30f3\u30c6\u30ca\u306eport\u7b49\u3092\u610f\u8b58\u305b\u305a\u306b\u63a5\u7d9a\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u5177\u4f53\u7684\u306b\u898b\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>3.0\u307e\u3067\u306ftestcontainers\u5229\u7528\u6642\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306b<code>@DynamicPropertySource<\/code>\u3067\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-file=\"3.0\u4ee5\u524d\" data-lang=\"Java\"><code>    @Container\n    public static CassandraContainer&lt;?&gt; cassandra = new CassandraContainer&lt;&gt;(\"cassandra:3.11.2\")\n            .withInitScript(\"initial.cql\");\n\n    @DynamicPropertySource\n    static void properties(DynamicPropertyRegistry registry) {\n        registry.add(\"spring.cassandra.keyspace-name\", () -&gt; \"sample\");\n        var contactPoint = \"%s:%d\".formatted(cassandra.getContactPoint().getHostName(), cassandra.getContactPoint().getPort());\n        registry.add(\"spring.cassandra.contact-points\", () -&gt; contactPoint);\n        registry.add(\"spring.cassandra.local-datacenter\", () -&gt; cassandra.getLocalDatacenter());\n    }<\/code><\/pre><\/div>\n\n\n\n<p>3.1\u3067\u306f<code>@ServiceConnection<\/code>\u3092<code>@Container<\/code>\u3068\u4e00\u7dd2\u306b\u4ed8\u4e0e\u3059\u308b\u3060\u3051\u3067\u826f\u304f\u306a\u308a\u307e\u3059\uff01<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-file=\"3.1\u4ee5\u964d\" data-lang=\"Java\"><code>    @Container\n    @ServiceConnection\n    public static CassandraContainer&lt;?&gt; cassandra = new CassandraContainer&lt;&gt;(\"cassandra:3.11.2\")\n            .withInitScript(\"initial.cql\");<\/code><\/pre><\/div>\n\n\n<p><\/p><div class=\"memo \"><div class=\"memo_ttl dfont\"> \u30e1\u30e2<\/div>\u30fb\u3059\u3079\u3066\u306e\u30b3\u30f3\u30c6\u30ca\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u306a\u304f\u3001\u300cSpringBoot\u304c\u30b5\u30dd\u30fc\u30c8\u3059\u308b\u300dimage\u3060\u3051\u304c\u4f7f\u3048\u307e\u3059\u3002<br>\n\u30fb\u4f55\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u304b\u306f\u4ee5\u4e0b\u306eURL\u304b\u3089\u3054\u78ba\u8a8d\u304f\u3060\u3055\u3044<br>\n\u30b5\u30dd\u30fc\u30c8\u30a4\u30e1\u30fc\u30b8\uff1aTDB<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-4\">\u958b\u767a\u6642\u306eDocker\u5229\u7528<\/h2>\n\n\n\n<p>docker\u3068\u306e\u9023\u643a\u304c\u5f37\u5316\u3055\u308c\u3066\u304a\u308a\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8d77\u52d5\u30fb\u7d42\u4e86\u306b\u5408\u308f\u305b\u3066Docker\u30b3\u30f3\u30c6\u30ca\u306e\u8d77\u52d5\u30fb\u7d42\u4e86\u304c\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\ud83d\udc4d<\/p>\n\n\n\n<p>testcontainers\u3068\u4f7f\u3046\u65b9\u6cd5\u3068docker-compose\u3092\u4f7f\u3046\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-5\"><a href=\"https:\/\/github.com\/spring-projects\/spring-boot\/wiki\/Spring-Boot-3.1-Release-Notes#dependency-management-for-apache-httpclient-4\" target=\"_blank\" rel=\"noreferrer noopener\">testcontainers<\/a><\/h3>\n\n\n\n<p>testcontainers\u3068\u3044\u3046\u3001junit5\u5b9f\u884c\u6642\u306b\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3001\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30fc\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u30ad\u30e5\u30fc\u306a\u3069\u306e\u4f9d\u5b58\u95a2\u4fc2\u3092Docker\u30b3\u30f3\u30c6\u30ca\u3067\u63d0\u4f9b\u3057\u3066\u304f\u308c\u308b\u30c4\u30fc\u30eb\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u203bJUnit5\u3067\u306etestcontainers\u306e\u4f7f\u3044\u65b9\u306f\u3053\u3061\u3089<\/p>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\"><a class=\"linkto table\" href=\"https:\/\/hirabay.net\/?p=615\"><span class=\"tbcell tbimg\"><img loading=\"lazy\" decoding=\"async\" width=\"160\" height=\"160\" src=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/04\/RestTemplate-160x160.png\" class=\"attachment-thumb-160 size-thumb-160 wp-post-image\" alt=\"\" srcset=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/04\/RestTemplate-160x160.png 160w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/04\/RestTemplate-150x150.png 150w\" sizes=\"auto, (max-width: 160px) 100vw, 160px\"><\/span><span class=\"tbcell tbtext\"><time class=\"pubdate sng-link-time dfont\" itemprop=\"datePublished\" datetime=\"2023-04-26\">2023\u5e744\u670826\u65e5<\/time>testcontainers\u306e\u4f7f\u3044\u65b9\u3000\u301cCassandra\u7de8\u301c<\/span><\/a>\n\n<a class=\"linkto table\" href=\"https:\/\/hirabay.net\/?p=621\"><span class=\"tbcell tbimg\"><img loading=\"lazy\" decoding=\"async\" width=\"160\" height=\"160\" src=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/04\/RestTemplate-1-160x160.png\" class=\"attachment-thumb-160 size-thumb-160 wp-post-image\" alt=\"\" srcset=\"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/04\/RestTemplate-1-160x160.png 160w, https:\/\/hirabay.net\/wp-content\/uploads\/2023\/04\/RestTemplate-1-150x150.png 150w\" sizes=\"auto, (max-width: 160px) 100vw, 160px\"><\/span><span class=\"tbcell tbtext\"><time class=\"pubdate sng-link-time dfont\" itemprop=\"datePublished\" datetime=\"2023-04-30\">2023\u5e744\u670830\u65e5<\/time>testcontainers\u306e\u4f7f\u3044\u65b9\u3000\u301cRedis\u7de8\u301c<\/span><\/a><\/div>\n\n\n\n<p>SpringBoot3.1\u3067\u306f\u3053\u306etestcontainers\u3092\u958b\u767a\u6642\u306b\u3082\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff01<\/p>\n\n\n\n<p>testcontainers\u3092\u958b\u767a\u6642\u306b\u4f7f\u7528\u3059\u308b\u306b\u306f<span class=\"keiko_yellow\">test source<\/span>\u914d\u4e0b\u306b\u30e1\u30a4\u30f3\u30af\u30e9\u30b9\u3068Configuration\u30af\u30e9\u30b9\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-groovy\" data-file=\"build.gradle\" data-lang=\"Groovy\"><code>dependencies {\n\ttestImplementation 'org.springframework.boot:spring-boot-testcontainers'\n  \/\/ \u4eca\u56de\u306fCassandra\u3092\u5229\u7528\n\ttestImplementation 'org.testcontainers:cassandra'\n}<\/code><\/pre><\/div>\n\n\n\n<p>\u307e\u305a\u306fConfiguration\u30af\u30e9\u30b9\u3067\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-lang=\"Java\"><code>@TestConfiguration(proxyBeanMethods = false)\npublic class TestContainersConfiguration {\n\n    @Bean\n    @ServiceConnection\n    public CassandraContainer&lt;?&gt; cassandraContainer() {\n        return new CassandraContainer&lt;&gt;(\"cassandra:3.11.2\")\n                .withInitScript(\"initial.cql\") \/\/ \u521d\u671f\u30af\u30a8\u30ea\n                .withExposedPorts(9042);\n    }\n\n}<\/code><\/pre><\/div>\n\n\n<p><\/p><div class=\"memo \"><div class=\"memo_ttl dfont\"> \u30e1\u30e2<\/div>\u30fb@Bean\u767b\u9332\u3059\u308b\u3068\u30b3\u30f3\u30c6\u30ca\u306e\u8d77\u52d5\u30fb\u7d42\u4e86\u3092SpringBoot\u5074\u3067\u7ba1\u7406\u3057\u3066\u308c\u307e\u3059<br>\n\u30fb@ServiceConnection\u3092\u4ed8\u4e0e\u3059\u308b\u3068\u95a2\u9023property\u3092\u8a2d\u5b9a\u305b\u305a\u3068\u3082\u30b3\u30f3\u30c6\u30ca\u306b\u63a5\u7d9a\u3067\u304d\u308b\u3088\u3046\u306b\u69cb\u6210\u3057\u3066\u304f\u308c\u307e\u3059<\/div>\n\n\n\n<p>\u6b21\u306b\u30e1\u30a4\u30f3\u30af\u30e9\u30b9\u3067\u3059\u3002<br>\u203bmain source\u914d\u4e0b\u306e\u30e1\u30a4\u30f3\u30af\u30e9\u30b9\u3068\u306f\u5225\u3067\u4f5c\u6210\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-java\" data-lang=\"Java\"><code>public class TestApplication {\n    public static void main(String[] args) {\n        SpringApplication.from(MainApplication::main) \/\/ main\u914d\u4e0b\u306e\u30e1\u30a4\u30f3\u30af\u30e9\u30b9\u3092\u6307\u5b9a\n                .with(TestContainersConfiguration.class) \/\/ \u5148\u307b\u3069\u4f5c\u6210\u3057\u305fConfiguration\u30af\u30e9\u30b9\u3092\u6307\u5b9a\n                .run(args);\n    }\n}<\/code><\/pre><\/div>\n\n\n\n<p>\u3053\u308c\u3067\u6e96\u5099\u306fOK\uff01<\/p>\n\n\n\n<p>gradle\u3060\u3068<code>bootTestRun<\/code>\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3059\u308b\u3068\u3001Docker\u30b3\u30f3\u30c6\u30ca\u3092\u5229\u7528\u3057\u306a\u304c\u3089\u958b\u767a\u304c\u3067\u304d\u307e\u3059\uff01<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\"><a href=\"https:\/\/github.com\/spring-projects\/spring-boot\/wiki\/Spring-Boot-3.1-Release-Notes#docker-compose\" target=\"_blank\" rel=\"noreferrer noopener\">docker-compose<\/a><\/h3>\n\n\n\n<p><code>spring-boot-docker-compose<\/code>\u3092\u4f9d\u5b58\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u76f4\u4e0b\u306e<code>docker-compose.yml<\/code>\u3092\u5143\u306bdocker\u30b3\u30f3\u30c6\u30ca\u304c\u8d77\u52d5\u3057\u3066\u304f\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-groovy\" data-file=\"build.gradle\" data-lang=\"Groovy\"><code>dependencies {\n    ...\n    implementation 'org.springframework.boot:spring-boot-docker-compose'\n    ...\n}<\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"i-7\">\u30ed\u30fc\u30ab\u30eb\u306e\u307f\u6709\u52b9\u306b<\/h4>\n\n\n\n<p>implementation\u3067\u4f9d\u5b58\u3092\u8ffd\u52a0\u3059\u308b\u3068\u672c\u756a\u3067\u3082\u6709\u52b9\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u306e\u3067\u3061\u3087\u3063\u3068\u6c17\u6301\u3061\u60aa\u3044\u3067\u3059\u3088\u306d\u3002<\/p>\n\n\n\n<p>\u305d\u3093\u306a\u3068\u304d\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u8a2d\u5b9a\u3067bootRun\u306e\u3068\u304d\u3060\u3051docker-compose\u9023\u643a\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\uff01<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism undefined-numbers lang-groovy\" data-file=\"build.gradle\" data-lang=\"Groovy\"><code>\/\/ implementation\u306e\u4ee3\u308f\u308a\u306b\u4f7f\u3048\u308bbootRunOnly\u3092\u5b9a\u7fa9\nconfigurations {\n    bootRunOnly\n}\n\ndependencies {\n    ...\n    bootRunOnly 'org.springframework.boot:spring-boot-docker-compose'\n    ...\n}\n\nbootRun {\n    \/\/ bootRun\u6642\u306e\u307f\u3001bootRunOnly\u3067\u5b9a\u7fa9\u3057\u305f\u4f9d\u5b58\u3092\u6709\u52b9\u306b\n    classpath += configurations.bootRunOnly\n}<\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">docker-compose\u9023\u643a\u3068testcontainer\u3069\u3063\u3061\u3092\u4f7f\u3046\uff1f<\/h3>\n\n\n\n<p>test\u306b\u7d5e\u3063\u3066\u8a00\u3048\u3070\u3001testcontainer\uff11\u629e\u3060\u3068\u601d\u3044\u307e\u3059\uff08docker-compose\u9023\u643a\u306ftest\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u3055\u308c\u3066\u3044\u306a\u3055\u305d\u3046\u306a\ud83e\udd14\uff09<\/p>\n\n\n\n<p>\u958b\u767a\u6642\u306ebootRun\u6642\u306f\u3001docker-compose\u9023\u643a\u306e\u65b9\u304c\u3044\u3044\u304b\u306a\u3068\uff08\u6a5f\u80fd\u7684\u306b\u306f\u3069\u3063\u3053\u3044\u3069\u3063\u3053\u3044\u3067\u3001test\u7528\u306b\u5225\u3067main\u30af\u30e9\u30b9\u3092\u4f5c\u3089\u306a\u3051\u308c\u3070\u3044\u3051\u306a\u3044\u306e\u304c\u500b\u4eba\u7684\u306b\u5f15\u3063\u304b\u304b\u308b\u306e\u3067\u2026\uff09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SpringBoot 3.1\u304cGA\u3068\u306a\u308a\u307e\u3057\u305fRelease Notes\u3092\u53c2\u8003\u306b3.0\u7cfb\u304b\u3089\u306e\u5909\u66f4\u70b9\u3092\u307e\u3068\u3081\u307e\u3059\u81ea\u5206\u304c\u79fb\u884c\u3059\u308b\u3068\u304d\u306b\u95a2\u4fc2\u306e\u3042\u308b\u3082\u306e\u3084\u8208\u5473\u304c\u3042\u308b\u3082\u306e\u304c\u4e2d\u5fc3\u3068\u306a\u308a\u307e\u3059\u304c\u3054\u5bb9\u8d66\u304f\u3060\u3055\u3044\ud83d\ude47\u200d\u2642\ufe0f \u95a2\u9023\u8a18\u4e8b\u306f\u3053\u3061\u3089 &#8230; <\/p>\n","protected":false},"author":1,"featured_media":635,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[13],"class_list":{"0":"post-394","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-6","8":"tag-springboot"},"jetpack_featured_media_url":"https:\/\/hirabay.net\/wp-content\/uploads\/2023\/05\/SpringBoot.png","_links":{"self":[{"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/posts\/394","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=394"}],"version-history":[{"count":15,"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/posts\/394\/revisions"}],"predecessor-version":[{"id":684,"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/posts\/394\/revisions\/684"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=\/wp\/v2\/media\/635"}],"wp:attachment":[{"href":"https:\/\/hirabay.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=394"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hirabay.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}