{"id":39950,"date":"2023-08-25T18:21:40","date_gmt":"2023-07-31T00:18:02","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/"},"modified":"2024-04-30T20:05:18","modified_gmt":"2024-04-30T12:05:18","slug":"%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/","title":{"rendered":"\u6211\u4f7f\u7528Spring Boot 2\uff08Kotlin\uff09+ Gradle Kotlin DSL\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u591a\u6a21\u5757"},"content":{"rendered":"<h1>\u80cc\u666f- \u9700\u8981\u4e00\u500b\u4e2d\u6587\u7248\u672c<\/h1>\n<p>\u6211\u5728Java\u4e2d\u6709\u5f88\u591a\u673a\u4f1a\u4f7f\u7528SpringBoot\uff0c<br \/>\n\u800c\u4e14Spring Initializr\u73b0\u5728\u4e5f\u53ef\u4ee5\u9009\u62e9Kotlin\uff0c<br \/>\n\u6240\u4ee5\u6211\u6253\u7b97\u6709\u4e00\u5929\u8bd5\u7740\u7528Kotlin\u7f16\u5199\u3002<br \/>\n\u4f46\u5b9e\u9645\u5c1d\u8bd5\u65f6\uff0c\u6211\u9047\u5230\u4e86\u4e00\u4e9b\u56f0\u6270\uff0c<br \/>\n\u4e3b\u8981\u662f\u5173\u4e8egradle\u4e2d\u591a\u6a21\u5757\u7684\u5199\u6cd5\uff0c<br \/>\n\u6240\u4ee5\u6211\u5c06\u5176\u8bb0\u5f55\u4e0b\u6765\u4f5c\u4e3a\u5907\u5fd8\u3002<\/p>\n<h1>Gradle Kotlin DSL \u662f\u4ec0\u4e48\uff1f<\/h1>\n<p>\u53ef\u4ee5\u4f7f\u7528Kotlin\u7f16\u5199Gradle\u6784\u5efa\u811a\u672c\u3002<br \/>\n\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u8003\u8fd9\u91cc\u3002<br \/>\n\u5728Spring Initializr\u4e2d\u521b\u5efa\u9879\u76ee\u65f6\uff0c\u9ed8\u8ba4\u4f7f\u7528Kotlin DSL\u7f16\u5199\u3002<\/p>\n<h1>\u7248\u672c<\/h1>\n<div>\n<div class=\"post-table\">softwareversionSpring Boot2.4.1JDKCorretto-11.0.9.12.1Kotlin1.4.21Gradle6.7.1<\/div>\n<\/div>\n<h1>\u591a\u6a21\u5757\u7ed3\u6784<\/h1>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d3d7f37434c4406c88017\/7-0.png\" alt=\"MultiModuleImage.png\" \/><\/div>\n<pre class=\"post-pre\"><code>.\r\n\u251c\u2500\u2500 build.gradle.kts\r\n\u251c\u2500\u2500 gradle\r\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 wrapper\r\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 gradle-wrapper.jar\r\n\u2502\u00a0\u00a0     \u2514\u2500\u2500 gradle-wrapper.properties\r\n\u251c\u2500\u2500 gradlew\r\n\u251c\u2500\u2500 gradlew.bat\r\n\u251c\u2500\u2500 practice-batch\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 build.gradle.kts\r\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 src\r\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 main\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 kotlin\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 com\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 example\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0         \u2514\u2500\u2500 practice\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0             \u2514\u2500\u2500 batch\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0                 \u2514\u2500\u2500 PracticeBatchApplication.kt\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2514\u2500\u2500 resources\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0     \u2514\u2500\u2500 application.yml\r\n\u2502\u00a0\u00a0     \u2514\u2500\u2500 test\r\n\u2502\u00a0\u00a0         \u2514\u2500\u2500 kotlin\r\n\u2502\u00a0\u00a0             \u2514\u2500\u2500 com\r\n\u2502\u00a0\u00a0                 \u2514\u2500\u2500 example\r\n\u2502\u00a0\u00a0                     \u2514\u2500\u2500 practice\r\n\u2502\u00a0\u00a0                         \u2514\u2500\u2500 batch\r\n\u2502\u00a0\u00a0                             \u2514\u2500\u2500 PracticeBatchApplicationTests.kt\r\n\u251c\u2500\u2500 practice-core\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 build.gradle.kts\r\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 src\r\n\u2502\u00a0\u00a0     \u251c\u2500\u2500 main\r\n\u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2514\u2500\u2500 kotlin\r\n\u2502\u00a0\u00a0     \u2514\u2500\u2500 test\r\n\u2502\u00a0\u00a0         \u251c\u2500\u2500 kotlin\r\n\u2502\u00a0\u00a0         \u2502\u00a0\u00a0 \u2514\u2500\u2500 com\r\n\u2502\u00a0\u00a0         \u2502\u00a0\u00a0     \u2514\u2500\u2500 example\r\n\u2502\u00a0\u00a0         \u2502\u00a0\u00a0         \u2514\u2500\u2500 practice\r\n\u2502\u00a0\u00a0         \u2502\u00a0\u00a0             \u2514\u2500\u2500 core\r\n\u2502\u00a0\u00a0         \u2502\u00a0\u00a0                 \u251c\u2500\u2500 PracticeCoreApplication.kt\r\n\u2502\u00a0\u00a0         \u2502\u00a0\u00a0                 \u2514\u2500\u2500 PracticeCoreApplicationTests.kt\r\n\u2502\u00a0\u00a0         \u2514\u2500\u2500 resources\r\n\u2502\u00a0\u00a0             \u2514\u2500\u2500 application.yml\r\n\u251c\u2500\u2500 practice-web\r\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 backend\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 src\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u251c\u2500\u2500 main\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u251c\u2500\u2500 kotlin\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 com\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 example\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0         \u2514\u2500\u2500 practice\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0             \u2514\u2500\u2500 web\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2502\u00a0\u00a0                 \u2514\u2500\u2500 PracticeWebApplication.kt\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2502\u00a0\u00a0 \u2514\u2500\u2500 resources\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2502\u00a0\u00a0     \u2514\u2500\u2500 application.yml\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0     \u2514\u2500\u2500 test\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0         \u2514\u2500\u2500 kotlin\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0             \u2514\u2500\u2500 com\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0                 \u2514\u2500\u2500 example\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0                     \u2514\u2500\u2500 practice\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0                         \u2514\u2500\u2500 web\r\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0                             \u2514\u2500\u2500 PracticeWebApplicationTests.kt\r\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 build.gradle.kts\r\n\u2514\u2500\u2500 settings.gradle.kts\r\n<\/code><\/pre>\n<h1>\u5efa\u7b51\u811a\u672c<\/h1>\n<h2>\u6784\u5efa.gradle.kts<\/h2>\n<p>\u6839\u636e\u60a8\u7684\u8981\u6c42\uff0c\u4ee5\u4e0b\u662f\u5bf9&#8221;\u30eb\u30fc\u30c8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d3\u30eb\u30c9\u30b9\u30af\u30ea\u30d7\u30c8&#8221;\u8fdb\u884c\u6c49\u8bed\u7684\u540c\u4e49\u8f6c\u8ff0\uff1a<br \/>\n&#8220;\u6784\u5efa\u6839\u9879\u76ee\u7684\u811a\u672c\u3002&#8221;<\/p>\n<pre class=\"post-pre\"><code><span class=\"kn\">import<\/span> <span class=\"nn\">org.jetbrains.kotlin.gradle.tasks.KotlinCompile<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.springframework.boot.gradle.plugin.SpringBootPlugin<\/span>\r\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.springframework.boot.gradle.tasks.bundling.BootJar<\/span>\r\n\r\n<span class=\"n\">plugins<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"n\">id<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"java\"<\/span><span class=\"o\">)<\/span>\r\n  <span class=\"n\">id<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"org.springframework.boot\"<\/span><span class=\"o\">)<\/span> <span class=\"n\">version<\/span> <span class=\"s2\">\"2.4.1\"<\/span>\r\n  <span class=\"n\">id<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"io.spring.dependency-management\"<\/span><span class=\"o\">)<\/span> <span class=\"n\">version<\/span> <span class=\"s2\">\"1.0.10.RELEASE\"<\/span>\r\n  <span class=\"n\">kotlin<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"jvm\"<\/span><span class=\"o\">)<\/span> <span class=\"n\">version<\/span> <span class=\"s2\">\"1.4.21\"<\/span>\r\n  <span class=\"n\">kotlin<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"plugin.spring\"<\/span><span class=\"o\">)<\/span> <span class=\"n\">version<\/span> <span class=\"s2\">\"1.4.21\"<\/span>\r\n<span class=\"o\">}<\/span>\r\n\r\n<span class=\"n\">tasks<\/span><span class=\"o\">.<\/span><span class=\"na\">getByName<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">BootJar<\/span><span class=\"o\">&gt;(<\/span><span class=\"s2\">\"bootJar\"<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"n\">enabled<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span>  <span class=\"c1\">\/\/ \u30eb\u30fc\u30c8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u5b9f\u884cJar\u3092\u4f5c\u6210\u3057\u306a\u3044\u8a2d\u5b9a<\/span>\r\n<span class=\"o\">}<\/span>\r\n\r\n<span class=\"n\">tasks<\/span><span class=\"o\">.<\/span><span class=\"na\">getByName<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Jar<\/span><span class=\"o\">&gt;(<\/span><span class=\"s2\">\"jar\"<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"n\">enabled<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span>  <span class=\"c1\">\/\/ \u30eb\u30fc\u30c8\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067Jar\u3092\u4f5c\u6210\u3057\u306a\u3044\u8a2d\u5b9a<\/span>\r\n<span class=\"o\">}<\/span>\r\n\r\n<span class=\"k\">allprojects<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"k\">repositories<\/span> <span class=\"o\">{<\/span>\r\n    <span class=\"n\">mavenCentral<\/span><span class=\"o\">()<\/span>\r\n  <span class=\"o\">}<\/span>\r\n<span class=\"o\">}<\/span>\r\n\r\n<span class=\"k\">subprojects<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"n\">group<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"com.example\"<\/span>\r\n  <span class=\"n\">version<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"0.0.1-SNAPSHOT\"<\/span>\r\n\r\n  <span class=\"n\">apply<\/span><span class=\"o\">(<\/span><span class=\"n\">plugin<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"kotlin\"<\/span><span class=\"o\">)<\/span>\r\n  <span class=\"n\">apply<\/span><span class=\"o\">(<\/span><span class=\"n\">plugin<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"org.jetbrains.kotlin.plugin.spring\"<\/span><span class=\"o\">)<\/span>\r\n  <span class=\"n\">apply<\/span><span class=\"o\">(<\/span><span class=\"n\">plugin<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"io.spring.dependency-management\"<\/span><span class=\"o\">)<\/span>\r\n\r\n  <span class=\"n\">dependencyManagement<\/span> <span class=\"o\">{<\/span>\r\n    <span class=\"n\">imports<\/span> <span class=\"o\">{<\/span>\r\n      <span class=\"n\">mavenBom<\/span><span class=\"o\">(<\/span><span class=\"n\">SpringBootPlugin<\/span><span class=\"o\">.<\/span><span class=\"na\">BOM_COORDINATES<\/span><span class=\"o\">)<\/span>\r\n    <span class=\"o\">}<\/span>\r\n  <span class=\"o\">}<\/span>\r\n\r\n  <span class=\"n\">java<\/span><span class=\"o\">.<\/span><span class=\"na\">sourceCompatibility<\/span> <span class=\"o\">=<\/span> <span class=\"n\">JavaVersion<\/span><span class=\"o\">.<\/span><span class=\"na\">VERSION_11<\/span>\r\n  <span class=\"n\">java<\/span><span class=\"o\">.<\/span><span class=\"na\">targetCompatibility<\/span> <span class=\"o\">=<\/span> <span class=\"n\">JavaVersion<\/span><span class=\"o\">.<\/span><span class=\"na\">VERSION_11<\/span>\r\n\r\n  <span class=\"n\">configurations<\/span> <span class=\"o\">{<\/span>\r\n    <span class=\"n\">compileOnly<\/span> <span class=\"o\">{<\/span>\r\n      <span class=\"n\">extendsFrom<\/span><span class=\"o\">(<\/span><span class=\"n\">configurations<\/span><span class=\"o\">.<\/span><span class=\"na\">annotationProcessor<\/span><span class=\"o\">.<\/span><span class=\"na\">get<\/span><span class=\"o\">())<\/span>\r\n    <span class=\"o\">}<\/span>\r\n  <span class=\"o\">}<\/span>\r\n\r\n  <span class=\"k\">dependencies<\/span> <span class=\"o\">{<\/span>\r\n    <span class=\"n\">implementation<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"com.fasterxml.jackson.module:jackson-module-kotlin\"<\/span><span class=\"o\">)<\/span>\r\n    <span class=\"n\">implementation<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"org.jetbrains.kotlin:kotlin-reflect\"<\/span><span class=\"o\">)<\/span>\r\n    <span class=\"n\">implementation<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"org.jetbrains.kotlin:kotlin-stdlib-jdk8\"<\/span><span class=\"o\">)<\/span>\r\n    <span class=\"c1\">\/\/ \u4ee5\u4e0b\u3001JUnit5\u306e\u8a2d\u5b9a\u3092\u5165\u308c\u3066\u304a\u304f<\/span>\r\n    <span class=\"n\">testImplementation<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"org.springframework.boot:spring-boot-starter-test\"<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\r\n      <span class=\"n\">exclude<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"junit\"<\/span><span class=\"o\">)<\/span>\r\n    <span class=\"o\">}<\/span>\r\n    <span class=\"n\">testImplementation<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"org.junit.jupiter:junit-jupiter-api\"<\/span><span class=\"o\">)<\/span>\r\n    <span class=\"n\">testRuntimeOnly<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"org.junit.jupiter:junit-jupiter-engine\"<\/span><span class=\"o\">)<\/span>\r\n  <span class=\"o\">}<\/span>\r\n\r\n  <span class=\"n\">tasks<\/span><span class=\"o\">.<\/span><span class=\"na\">withType<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">KotlinCompile<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">{<\/span>\r\n    <span class=\"n\">kotlinOptions<\/span> <span class=\"o\">{<\/span>\r\n      <span class=\"n\">freeCompilerArgs<\/span> <span class=\"o\">=<\/span> <span class=\"n\">listOf<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"-Xjsr305=strict\"<\/span><span class=\"o\">)<\/span>\r\n      <span class=\"n\">jvmTarget<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"11\"<\/span>\r\n    <span class=\"o\">}<\/span>\r\n  <span class=\"o\">}<\/span>\r\n\r\n  <span class=\"n\">tasks<\/span><span class=\"o\">.<\/span><span class=\"na\">withType<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Test<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">{<\/span>\r\n    <span class=\"n\">useJUnitPlatform<\/span><span class=\"o\">()<\/span>\r\n  <span class=\"o\">}<\/span>\r\n<span class=\"o\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u8bbe\u7f6e.gradle.kts<\/h2>\n<pre class=\"post-pre\"><code><span class=\"n\">rootProject<\/span><span class=\"o\">.<\/span><span class=\"na\">name<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"practice-parent\"<\/span>\r\n\r\n<span class=\"n\">include<\/span><span class=\"o\">(<\/span><span class=\"s2\">\":practice-core\"<\/span><span class=\"o\">)<\/span>\r\n<span class=\"n\">include<\/span><span class=\"o\">(<\/span><span class=\"s2\">\":practice-batch\"<\/span><span class=\"o\">)<\/span>\r\n<span class=\"n\">include<\/span><span class=\"o\">(<\/span><span class=\"s2\">\":practice-web\"<\/span><span class=\"o\">)<\/span>\r\n<span class=\"n\">include<\/span><span class=\"o\">(<\/span><span class=\"s2\">\":practice-web:backend\"<\/span><span class=\"o\">)<\/span>\r\n<\/code><\/pre>\n<h2>\u7ec3\u4e60\u6838\u5fc3\/build.gradle.kts<\/h2>\n<p>\u53ef\u4ee5\u5b9e\u65bdSpringBoot\u7ec4\u4ef6\u7684\u5171\u4eab\u5e93\u9879\u76ee\u7684\u6784\u5efa\u811a\u672c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"kn\">import<\/span> <span class=\"nn\">org.springframework.boot.gradle.tasks.bundling.BootJar<\/span>\r\n\r\n<span class=\"nf\">apply<\/span><span class=\"o\">(<\/span><span class=\"n\">plugin<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"org.springframework.boot\"<\/span><span class=\"o\">)<\/span>\r\n<span class=\"n\">apply<\/span><span class=\"o\">(<\/span><span class=\"n\">plugin<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"io.spring.dependency-management\"<\/span><span class=\"o\">)<\/span>\r\n\r\n<span class=\"k\">dependencies<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"n\">implementation<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"org.springframework.boot:spring-boot-starter\"<\/span><span class=\"o\">)<\/span>\r\n<span class=\"o\">}<\/span>\r\n\r\n<span class=\"n\">tasks<\/span><span class=\"o\">.<\/span><span class=\"na\">getByName<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">BootJar<\/span><span class=\"o\">&gt;(<\/span><span class=\"s2\">\"bootJar\"<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"n\">enabled<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span>  <span class=\"c1\">\/\/ practice-core\u3067\u5b9f\u884cJar\u3092\u4f5c\u6210\u3057\u306a\u3044\u8a2d\u5b9a<\/span>\r\n<span class=\"o\">}<\/span>\r\n\r\n<span class=\"n\">tasks<\/span><span class=\"o\">.<\/span><span class=\"na\">getByName<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Jar<\/span><span class=\"o\">&gt;(<\/span><span class=\"s2\">\"jar\"<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"n\">enabled<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">true<\/span>\r\n<span class=\"o\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u7ec3\u4e60-\u7f51\u9875\/build.gradle.kts<\/h2>\n<p>\u5982\u679c\u6709\u591a\u4e2a\u6a21\u5757\u9700\u8981\u7ec4\u5408\uff0c\u53ef\u4ee5\u63d0\u524d\u51c6\u5907\u597d\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"n\">tasks<\/span><span class=\"o\">.<\/span><span class=\"na\">getByName<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">Jar<\/span><span class=\"o\">&gt;(<\/span><span class=\"s2\">\"jar\"<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"n\">enabled<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">false<\/span>\r\n<span class=\"o\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u7ec3\u4e60-\u7f51\u9875\/\u540e\u7aef\/\u6784\u5efa.gradle.kts<\/h2>\n<p>\u4f9d\u8d56\u4e8e Practice-core \u7684 Web \u9879\u76ee\u6784\u5efa\u811a\u672c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"kn\">import<\/span> <span class=\"nn\">org.springframework.boot.gradle.tasks.bundling.BootJar<\/span>\r\n\r\n<span class=\"nf\">apply<\/span><span class=\"o\">(<\/span><span class=\"n\">plugin<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"org.springframework.boot\"<\/span><span class=\"o\">)<\/span>\r\n<span class=\"n\">apply<\/span><span class=\"o\">(<\/span><span class=\"n\">plugin<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"io.spring.dependency-management\"<\/span><span class=\"o\">)<\/span>\r\n\r\n<span class=\"k\">dependencies<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"n\">implementation<\/span><span class=\"o\">(<\/span><span class=\"n\">project<\/span><span class=\"o\">(<\/span><span class=\"s2\">\":practice-core\"<\/span><span class=\"o\">))<\/span>\r\n  <span class=\"n\">implementation<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"org.springframework.boot:spring-boot-starter-web\"<\/span><span class=\"o\">)<\/span>\r\n<span class=\"o\">}<\/span>\r\n\r\n<span class=\"n\">tasks<\/span><span class=\"o\">.<\/span><span class=\"na\">getByName<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">BootJar<\/span><span class=\"o\">&gt;(<\/span><span class=\"s2\">\"bootJar\"<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"c1\">\/\/ \u5b9f\u884cJar\u7528\u306eMain\u30af\u30e9\u30b9\u3092\u8a2d\u5b9a\u3059\u308b<\/span>\r\n  <span class=\"n\">mainClass<\/span><span class=\"o\">.<\/span><span class=\"na\">set<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"com.example.practice.web.PracticeWebApplication\"<\/span><span class=\"o\">)<\/span>\r\n<span class=\"o\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u5b9e\u8df5-\u6279\u91cf\/\u6784\u5efa.gradle.kts<\/h2>\n<p>\u4f9d\u8d56\u4e8ePractice-core\u7684\u6279\u5904\u7406\u9879\u76ee\u7684\u6784\u5efa\u811a\u672c<\/p>\n<pre class=\"post-pre\"><code><span class=\"kn\">import<\/span> <span class=\"nn\">org.springframework.boot.gradle.tasks.bundling.BootJar<\/span>\r\n\r\n<span class=\"nf\">apply<\/span><span class=\"o\">(<\/span><span class=\"n\">plugin<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"org.springframework.boot\"<\/span><span class=\"o\">)<\/span>\r\n<span class=\"n\">apply<\/span><span class=\"o\">(<\/span><span class=\"n\">plugin<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"io.spring.dependency-management\"<\/span><span class=\"o\">)<\/span>\r\n\r\n<span class=\"k\">dependencies<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"n\">implementation<\/span><span class=\"o\">(<\/span><span class=\"n\">project<\/span><span class=\"o\">(<\/span><span class=\"s2\">\":practice-core\"<\/span><span class=\"o\">))<\/span>\r\n  <span class=\"n\">implementation<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"org.springframework.boot:spring-boot-starter\"<\/span><span class=\"o\">)<\/span>\r\n<span class=\"o\">}<\/span>\r\n\r\n<span class=\"n\">tasks<\/span><span class=\"o\">.<\/span><span class=\"na\">getByName<\/span><span class=\"o\">&lt;<\/span><span class=\"n\">BootJar<\/span><span class=\"o\">&gt;(<\/span><span class=\"s2\">\"bootJar\"<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\r\n  <span class=\"c1\">\/\/ \u5b9f\u884cJar\u7528\u306eMain\u30af\u30e9\u30b9\u3092\u8a2d\u5b9a\u3059\u308b<\/span>\r\n  <span class=\"n\">mainClass<\/span><span class=\"o\">.<\/span><span class=\"na\">set<\/span><span class=\"o\">(<\/span><span class=\"s2\">\"com.example.practice.batch.PracticeBatchApplication\"<\/span><span class=\"o\">)<\/span>\r\n<span class=\"o\">}<\/span>\r\n<\/code><\/pre>\n<h1>\u4ee3\u7801 (daima)<\/h1>\n<h2>\u5728\u4e2d\u56fd\uff0c\u5c06\u4ee5\u4e0b\u5185\u5bb9\u7528\u4e2d\u6587\u7ffb\u8bd1\u4e3a\uff1a<\/h2>\n<p>\u5bf9\u7ec3\u4e60\u6838\u5fc3\u8fdb\u884c\u5355\u5143\u6d4b\u8bd5\uff0c\u8def\u5f84\u4e3a`practice-core\/src\/test\/\u30fb\u30fb\u30fb\/PracticeCoreApplication.kt`\u3002<\/p>\n<p>\u7531\u4e8e\u662f\u4e00\u4e2a\u5e93\u9879\u76ee\uff0c\u6240\u4ee5\u5728src\/main\u76ee\u5f55\u4e0b\u4e0d\u9700\u8981\u5305\u542b\u5177\u6709\u4e3b\u65b9\u6cd5\u7684\u7c7b\u3002<br \/>\n\u4e3a\u4e86\u80fd\u591f\u6267\u884cSpringBootTest\uff0c\u9700\u8981\u5728src\/test\u76ee\u5f55\u4e0b\u653e\u7f6e\u5177\u6709\u4e3b\u65b9\u6cd5\u7684\u7c7b\u3002<br \/>\n\u4e3b\u65b9\u6cd5\u5e94\u76f4\u63a5\u4f7f\u7528\u901a\u8fc7Spring Initializr\u521b\u5efa\u7684\u4ee3\u7801\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">package<\/span> <span class=\"nn\">com.example.practice.core<\/span>\r\n\r\n<span class=\"k\">import<\/span> <span class=\"nn\">org.springframework.boot.autoconfigure.SpringBootApplication<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nn\">org.springframework.boot.runApplication<\/span>\r\n\r\n<span class=\"nd\">@SpringBootApplication<\/span>\r\n<span class=\"kd\">class<\/span> <span class=\"nc\">PracticeCoreApplication<\/span>\r\n\r\n<span class=\"k\">fun<\/span> <span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"n\">args<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Array<\/span><span class=\"p\">&lt;<\/span><span class=\"nc\">String<\/span><span class=\"p\">&gt;)<\/span> <span class=\"p\">{<\/span>\r\n  <span class=\"n\">runApplication<\/span><span class=\"p\">&lt;<\/span><span class=\"nc\">PracticeCoreApplication<\/span><span class=\"p\">&gt;(*<\/span><span class=\"n\">args<\/span><span class=\"p\">)<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u7ec3\u4e60-web\/src\/main\/\u30fb\u30fb\u30fb\/\u7ec3\u4e60Web\u5e94\u7528\u7a0b\u5e8f.kt<\/h2>\n<p>\u4e3a\u4e86\u5c06SpringBoot\u5e94\u7528\u7a0b\u5e8f\u4f5c\u4e3a\u542f\u52a8\uff0c\u5c06\u5e26\u6709\u4e3b\u65b9\u6cd5\u7684\u7c7b\u653e\u7f6e\u5728src\/main\u76ee\u5f55\u4e0b\u3002<br \/>\n\u4e3a\u4e86\u80fd\u591f\u901a\u8fc7java -jar\u6267\u884c\uff0c\u5bf9practice-core\u66f4\u6539\u4e86\u4e3b\u65b9\u6cd5\u7684\u7f16\u5199\u65b9\u5f0f\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"k\">package<\/span> <span class=\"nn\">com.example.practice.web<\/span>\r\n\r\n<span class=\"k\">import<\/span> <span class=\"nn\">org.springframework.boot.autoconfigure.SpringBootApplication<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nn\">org.springframework.boot.runApplication<\/span>\r\n<span class=\"k\">import<\/span> <span class=\"nn\">org.springframework.context.annotation.ComponentScan<\/span>\r\n\r\n<span class=\"nd\">@SpringBootApplication<\/span>\r\n<span class=\"nd\">@ComponentScan<\/span><span class=\"p\">(<\/span><span class=\"s\">\"com.example.practice\"<\/span><span class=\"p\">)<\/span>\r\n<span class=\"kd\">class<\/span> <span class=\"nc\">PracticeWebApplication<\/span> <span class=\"p\">{<\/span>\r\n\r\n  <span class=\"k\">companion<\/span> <span class=\"k\">object<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nd\">@JvmStatic<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">main<\/span><span class=\"p\">(<\/span><span class=\"n\">args<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Array<\/span><span class=\"p\">&lt;<\/span><span class=\"nc\">String<\/span><span class=\"p\">&gt;)<\/span> <span class=\"p\">{<\/span>\r\n      <span class=\"n\">runApplication<\/span><span class=\"p\">&lt;<\/span><span class=\"nc\">PracticeWebApplication<\/span><span class=\"p\">&gt;(*<\/span><span class=\"n\">args<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">}<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<h2>\u8bf7\u539f\u751f\u5730\u7528\u4e2d\u6587\u8f6c\u8ff0\u4ee5\u4e0b\u5185\u5bb9\uff0c\u53ea\u9700\u8981\u4e00\u79cd\u9009\u9879\uff1a<\/h2>\n<p>\u8bf7\u5bfb\u627e\u4f4d\u4e8epractice-batch\/src\/main\/\u30fb\u30fb\u30fb\/PracticeBatchApplication.kt\u6587\u4ef6\u4e2d\u7684\u5185\u5bb9\u3002<\/p>\n<p>\u4e0ePracticeWebApplication\u7c7b\u4f3c\uff0c\u56e0\u6b64\u7701\u7565\u4e0d\u63d0\u3002<\/p>\n<h1>\u603b\u7ed3<\/h1>\n<p>\u6682\u65f6\u4f7f\u7528\u8fd9\u4e2a\u7248\u672c\u8fdb\u884c\u6784\u5efa\u5c31\u53ef\u4ee5\u4e86\u3002<br \/>\n\u4f5c\u4e3a\u591a\u6a21\u5757\u7684\u8d77\u70b9\uff0c\u6211\u8ba4\u4e3a\u5df2\u7ecf\u8db3\u591f\u4e86\u3002<br \/>\n\u5c31\u8fd9\u4e9b\u4e86\u3002<\/p>\n<h1>\u53c2\u8003\u7f51\u7ad9<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u30de\u30eb\u30c1\u30e2\u30b8\u30e5\u30fc\u30eb\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f5c\u6210<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Kotlin \u3067 Spring Boot Web \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4f5c\u6210<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">kotlin\u00d7SpringBoot\u3067\u4f5c\u3063\u305f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u884c\u53ef\u80fdjar\u30d5\u30a1\u30a4\u30eb\u4f5c\u6210\u65b9\u6cd5<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u80cc\u666f- \u9700\u8981\u4e00\u500b\u4e2d\u6587\u7248\u672c \u6211\u5728Java\u4e2d\u6709\u5f88\u591a\u673a\u4f1a\u4f7f\u7528SpringBoot\uff0c \u800c\u4e14Spring Initial [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-39950","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u6211\u4f7f\u7528Spring Boot 2\uff08Kotlin\uff09+ Gradle Kotlin DSL\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u591a\u6a21\u5757 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u4f7f\u7528spring-boot-2\uff08kotlin\uff09-gradle-kotlin-dsl\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u591a\u6a21\u5757\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u6211\u4f7f\u7528Spring Boot 2\uff08Kotlin\uff09+ Gradle Kotlin DSL\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u591a\u6a21\u5757\" \/>\n<meta property=\"og:description\" content=\"\u80cc\u666f- \u9700\u8981\u4e00\u500b\u4e2d\u6587\u7248\u672c \u6211\u5728Java\u4e2d\u6709\u5f88\u591a\u673a\u4f1a\u4f7f\u7528SpringBoot\uff0c \u800c\u4e14Spring Initial [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u4f7f\u7528spring-boot-2\uff08kotlin\uff09-gradle-kotlin-dsl\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u591a\u6a21\u5757\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-31T00:18:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T12:05:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d3d7f37434c4406c88017\/7-0.png\" \/>\n<meta name=\"author\" content=\"\u79d1, \u96c5\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u79d1, \u96c5\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/\",\"name\":\"\u6211\u4f7f\u7528Spring Boot 2\uff08Kotlin\uff09+ Gradle Kotlin DSL\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u591a\u6a21\u5757 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-07-31T00:18:02+00:00\",\"dateModified\":\"2024-04-30T12:05:18+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u6211\u4f7f\u7528Spring Boot 2\uff08Kotlin\uff09+ Gradle Kotlin DSL\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u591a\u6a21\u5757\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a\",\"name\":\"\u79d1, \u96c5\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g\",\"caption\":\"\u79d1, \u96c5\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u6211\u4f7f\u7528Spring Boot 2\uff08Kotlin\uff09+ Gradle Kotlin DSL\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u591a\u6a21\u5757 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u4f7f\u7528spring-boot-2\uff08kotlin\uff09-gradle-kotlin-dsl\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u591a\u6a21\u5757\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u6211\u4f7f\u7528Spring Boot 2\uff08Kotlin\uff09+ Gradle Kotlin DSL\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u591a\u6a21\u5757","og_description":"\u80cc\u666f- \u9700\u8981\u4e00\u500b\u4e2d\u6587\u7248\u672c \u6211\u5728Java\u4e2d\u6709\u5f88\u591a\u673a\u4f1a\u4f7f\u7528SpringBoot\uff0c \u800c\u4e14Spring Initial [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u4f7f\u7528spring-boot-2\uff08kotlin\uff09-gradle-kotlin-dsl\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u591a\u6a21\u5757\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-07-31T00:18:02+00:00","article_modified_time":"2024-04-30T12:05:18+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d3d7f37434c4406c88017\/7-0.png"}],"author":"\u79d1, \u96c5","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u79d1, \u96c5","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"3 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/","name":"\u6211\u4f7f\u7528Spring Boot 2\uff08Kotlin\uff09+ Gradle Kotlin DSL\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u591a\u6a21\u5757 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-07-31T00:18:02+00:00","dateModified":"2024-04-30T12:05:18+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u6211\u4f7f\u7528Spring Boot 2\uff08Kotlin\uff09+ Gradle Kotlin DSL\u5c1d\u8bd5\u5b9e\u73b0\u4e86\u591a\u6a21\u5757"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/41e222757cdd2a3365361328bd79970a","name":"\u79d1, \u96c5","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b2d3e00a7df03689797ebd4af8c5827ba5af936849a71050ec331f4cf902c5d?s=96&d=mm&r=g","caption":"\u79d1, \u96c5"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/keya\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e4%bd%bf%e7%94%a8spring-boot-2%ef%bc%88kotlin%ef%bc%89-gradle-kotlin-dsl%e5%b0%9d%e8%af%95%e5%ae%9e%e7%8e%b0%e4%ba%86%e5%a4%9a%e6%a8%a1%e5%9d%97%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/39950","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=39950"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/39950\/revisions"}],"predecessor-version":[{"id":94014,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/39950\/revisions\/94014"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=39950"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=39950"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=39950"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}