រំលងទៅមាតិកាសំខាន់

Spring Boot Kotlin - ការ Bootstrapping

ជំពូកនេះនឹងពន្យល់អ្នកពីរបៀបក្នុងការ bootstrapping នៅលើកម្មវិធី Spring Boot

Spring Initializer

  • ដើម្បីអាចបង្កើតនូវ Project Spring Boot មួយបានគឺមានវិធីច្រើន តែនៅក្នុង Tutorial មួយនេះគឺយើងនឹងនាំអ្នកទៅបង្កើត Project Spring Boot នៅលើគេហទំព័រ Spring Initializer

Spring Initializer Dashboard

  • នៅក្នុងរូបខាងលើគឺអ្នកនឹងបានឃើញនូវផ្ទាំងមួយ ដែលផ្ទាំងមួយនេះគឺប្រើសម្រាប់បង្កើតនូវ Project Spring Boot។ ឥឡូវយើងនឹងនាំអ្នកទៅស្វែងយល់ពីចំណុចនីមួយៗនៅក្នុងផ្ទាំងនេះ

    • Project: នៅក្នុងផ្នែកនេះគឺគេទាមទារឲ្យអ្នកធ្វើការជ្រើសរើសនូវប្រភេទនៃអ្នកគ្រប់គ្រង់ Project (អ្នកគ្រប់គ្រង Project គឺជាអ្នកដែលអាចរៀបចំឲ្យបានត្រឹមត្រូវទាក់ទងនឹង dependencies ដែលអ្នកត្រូវយកមកប្រើនៅក្នុង Project ហើយម៉្យាងវិញទៀតគឺអាចកំណត់នូវ Version របស់ Project បានដូចគ្នានិងមានជាច្រើនទៀត។ល។) ហើយសម្រាប់អ្នកគ្រប់គ្រង Project នេះគឺមានចំនួនពីរដូចខាងក្រោម៖

      • Maven ជាឧបករណ៍សម្រាប់គ្រប់គ្រង Project ដែលមានលក្ខណៈជា open-source software ហើយត្រូវប្រើជាចម្បងសម្រាប់ Project Java
      • Gradle ជាឧបករណ៍បង្កើតស្វ័យប្រវិត្តិកម្ម ដែលមានលក្ខណៈជា open-source ហើយវាបង្កើតឡើងបានដោយផ្អែកលើគោលគំនិតរបស់ Apache Maven និង Apache Ant

      មូលហេតុដែលអ្នកគួរប្រើ Gradle ព្រោះវាជៀសវាងការតាមដាននូវកិច្ចការដដែលៗ ហើយវាតាមដានតែកិច្ចការណាដែលត្រូវបានផ្លាស់ប្តូរប៉ុណ្ណោះ ដូច្នេះវាផ្តល់នូវដំណើរការលឿនជាងមុន។

    • Language: នៅក្នុងផ្នែកនេះគឺគេទាមទារឲ្យអ្នកធ្វើការជ្រើសរើសនូវប្រភេទនៃភាសា ដែលមានដូចខាងក្រោម៖

      • Java ជាភាសាកម្មវិធីដែលត្រូវបានប្រើប្រាស់យ៉ាងទូលំទូលាយ ដែលដំណើរការលើឧបករណ៍រាប់លានរួមទាំងកុំព្យូទ័រ កុំព្យូទ័រយួរដៃ ឧបករណ៍ចល័ត ឧបករណ៍លេងហ្គេម ឧបករណ៍វេជ្ជសាស្ត្រ និងឧបករណ៍ជាច្រើនទៀត។ ទម្រង់នៃភាសា Java គឺពឹងផ្អែកទៅលើភាសា C និង C++
      • Kotlin ជាភាសាកម្មវិធីថ្មីដែលមានលក្ខណៈ Open Source ហើយដូចទៅនឹងភាសា Java និង JavaScript ដែរ។ វាជាភាសាមួយដែលសំបូរបែប ដែលប្រមូលផ្តុំទៅដោយមុខងារជាច្រើនដែលស្ថិតនៅកន្លែងតែមួយ។ បច្ចុប្បន្ននេះ Kotlin ដំណើរការលើ JVM
      • Groovy ជា object oriented និងមានទម្រង់លក្ខណៈដូចភាសា Java។ កូដ​របស់ Groovy ត្រូវ compile ទៅជា Java Bytecode ហើយអាចដំណើរការនៅគ្រប់ platform ដែលមាន JRE
    • Spring Boot: នៅក្នុងផ្នែកនេះគឺគេទាមទារឲ្យអ្នកធ្វើការជ្រើសរើសនូវប្រភេទនៃ version របស់ Spring Boot ដូច្នេះអ្នកគួរជ្រើសរើសយក version ចុងក្រោយគេ។

    • Project Metadata: នៅក្នុងផ្នែកនេះគឺគេទាមទារឲ្យអ្នកធ្វើការបំពេញនៅព័ត៌មានចំនួនទាក់ទងនឹង Project

      • Group ជាការបញ្ជាក់ឈ្មោះរបស់ package
      • Artifact ជាការបញ្ជាក់ឈ្មោះនៃ Application
      • Name ដូចទៅនឹង Artifact ដែរ។
      • Description ជាការពិពណ៍នាទៅលើ Project
      • Package name ដូចទៅនឹង Group
      • Packaging ជាការជ្រើសរើសនូវប្រភេទនៃ packaging សម្រាប់ build យកទៅដំណើរក្នុងការប្រើប្រាស់ ហើយវាមានពីរគឺ:
        • Jar ជា Java Application Archive ដែលអាចដំណើរការកម្មវិធីនៅកុំព្យូទ័ររបស់ប្រើប្រាស់បានធម្មតា​។
        • War ជា Web Application Archive ដែលអាចដំណើរការកម្មវិធីបានតែនៅលើ server
      • Java ជាការជ្រើសរើសនូវប្រភេទនៃ version របស់ Java ដូច្នេះអ្នកអាចជ្រើសរើសយក version ណាដែលអ្នកចង់ប្រើបាន។
    • Dependencies: នៅក្នុងផ្នែកនេះគឺគេទាមទារឲ្យអ្នកធ្វើការជ្រើសរើសនូវប្រភេទនៃ dependencies ដូច្នេះអ្នកអាចរើសនូវ dependencies ដូចក្នុងរូបក៏បានឬក៏រើសតែ Spring Web មួយសិនក៏បាន។

    បន្ទាប់ពីនេះអ្នកនឹងឃើញនូវប៊ូតុងនៅខាងក្រោមចំនួនបីបន្ថែមទៀត:

    • GENERATE: ជាប៊ូតុងសម្រាប់បង្កើត Project Spring Boot
    • EXPLOER: ជាប៊ូតុងសម្រាប់មើល Structure Project Spring Boot
    • SHARE...: ជាប៊ូតុងសម្រាប់ចែករំលែក Project Spring Boot
  • បន្ទាប់ពីចុចប៊ូតុង Generate រួចរាល់ វាផ្តល់ zip file មួយដូចរូបខាងក្រោម:

Zip File Project

  • បន្ទាប់មកអ្នកអាចធ្វើការ Extract នូវ zip file នោះ ហើយបន្ទាប់គឺបើក IntelliJ IDEA IDE ហើយបើកនូវ Project ដែលអ្នកបាន Extract រួចរាល់នោះ។

IntelliJ

  • បន្ទាប់ពីបានបើក Project នោះនៅក្នុង IntelliJ IDEA IDE រួចរាល់គឺអ្នកត្រូវធ្វើការរងចាំឲ្យ IntelliJ IDEA IDE ត្រូវធ្វើការ Sync នូវ Project ឲ្យចប់អស់សិន ទើបអ្នកអាចចាប់ផ្តើមអភិវឌ្ឍនូវ Project មួយនេះបាន។

Start Project Spring IntelliJ

  • បន្ទាប់ពី Project ត្រូវបាន Synced រួចរាល់ អ្នកអាចក្រឡេកមើលនូវ Project Structure បន្តិច ដូចរូបខាងក្រោម:

Spring Boot Starter Folder

  • រូបភាពខាងក្រោមនេះគឺជា Project Structure ដែលត្រូវបាន Extract ចេញពី zip file ហើយមិនទាន់បានរៀបចំត្រឹមត្រូវ។​

Spring Boot Before Delete Unused File

  • រូបភាពខាងក្រោមនេះគឺជា Project Structure ដែលត្រូវបានលុបចោលនូវ Folders ឬក៏ Files ដែលឥតប្រយោជន៍ចោល និងបានរៀបចំបានត្រឹមត្រូវ។

Spring Boot After Delete Unused File

  • រូបភាពខាងក្រោមនេះគឺជាឯកសារ build.gradle.kts ដែលជាឯកសារអ្នកអាចបន្ថែមនូវ dependencies ចូលបន្ថែមឬក៏កែប្រែ Version នៃ Java, Kotlin, Spring Boot។ល។

Spring Boot Grandle Build

  • ស្វែងយល់បន្ថែមពីឯកសារ build.gradle.kts:
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
id("org.springframework.boot") version "2.5.1"
id("io.spring.dependency-management") version "1.0.11.RELEASE"
kotlin("jvm") version "1.5.10"
kotlin("plugin.spring") version "1.5.10"
kotlin("plugin.jpa") version "1.5.10"
}
  • Plugins: បន្ថែមទៅលើ Kotlin Gradle plugin, លំនាំដើមនៃការ configuration គឺប្រកាស kotlin-spring-plugin ដែលវាអាចជួយឲ្យ classes និង methods អាចមានលក្ខណៈ open គឺអាចឲ្យ classes ផ្សេងអាច inherited ទៅប្រើបាន(class នៅក្នុង Kotlin គឺមិនដូចក្នុង Java ទេ បើសិនមិនដាក់ open keyword នៅពីមុខ class នោះវានឹងក្លាយជា final class)។ មួយវិញទៀតដើម្បីអាចប្រើ Kotlin non-nullable properties ជាមួយ JPA គឺអ្នកត្រូវបើក enabled នូវ Kotlin JPA plugin។ វានឹងបង្កើតនូវ no-arg constructors សម្រាប់ class ទាំងអស់ដែល annotated ជាមួយនឹង @Entity, @MappedSuperclass, ឬក៏ @Embeddeable
group = "com.webapp"
version = "0.0.1-SNAPSHOT"
java.soruceCompatibility = JavaVersion.VERSION_11
  • ខាងលើនេះគឺមានជា group ដែលជាឈ្មោះ package, version ជា version នៃ application ដែលត្រូវបាន build, java.soruceCompatibility ជាការកំណត់ទៅលើ version របស់ Java សម្រាប់ build
repositories {
mavenCentral()
}
  • Repositories: ជាការកំណត់នូវកន្លែងនៃការទាញយក dependencies មកប្រើនៅក្នុង Project ដូចពេលអ្នកដាក់ mavenCentral() ចឹងវានឹងទៅទាញយកនៅគេហទំព័រ Maven Central Repository
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
runtimeOnly("com.h2database:h2")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
  • Dependencies: Library ចំនួនបីរបស់ Kotlin ដែលត្រូវបានទាមទារសម្រាប់ Project Spring Boot ដែលមានដូចខាងក្រោម:

    • kotlin-stdlib-jdk8: ជាស្តង់ដារ Library របស់ Kotlin នៃ Java 8 Variant
    • kotlin-reflect: ជា Kotlin reflection library
    • jackson-module-kotlin: ដាក់សម្រាប់ឲ្យគាំទ្រនឹង serialization/deserialization នៃ classes និង data classes របស់ Kotlin

    ហើយនៅមាន dependencies មួយចំនួនទៀត ដែលជារបស់ Spring និង Database ដែលមានដូចខាងក្រោម:

    • spring-boot-starter-data-jpa: ជា Library របស់ Spring Data JPA
    • spring-boot-starter-web: ជា Library របស់ Spring Web
    • h2: ជា Library របស់ H2 Database
    • spring-boot-starter-test: ជា Library របស់ Spring Test

    មួយវិញទៀត ឃើញថានៅរាល់ការទាញយក dependencies មកគឺមានជាការប្រើនូវមុខងារផ្សេងៗគ្នាដូចជា implementation ដែលប្រើសម្រាប់ឲ្យដំណើរការនូវ dependencies នោះចាប់ផ្តើមតាំងពីពេល implement ទៅ(ពេលសរសេរកូដ), runtimeOnly គឺដំណើរការតែពេល run time រីឯ testImplementation គឺដំណើរការនៅពេល test

tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs = listOf("-Xjsr305=strict")
jvmTarget = "11"
}
}
  • Compile options: លក្ខណៈសំខាន់របស់ Kotlin គឺ null-safety ដែលជាវាជួយដោះស្រាយបញ្ហាបានយ៉ាងច្រើននៅពេល compile time វាជៀសវាងនូវការ exception ដ៏ល្បីគឺ NullPointerException នៅពេល run time។ ដើម្បីបន្ថែមនូវមុខងារ null-safety នេះបានគឺអ្នកត្រូវបន្ថែមនូវ -Xjsr305 compiler ដែលមាន flag ជាមួយនឹង strict
tasks.withType<Test> {
useJUnitPlatform()
}
  • Test options: ជាការចុះបញ្ជីក្នុងការ testing ដោយប្រើ JUnit5

  • រូបភាពខាងក្រោមនេះគឺនៅក្នុងឯកសារ application.properties តែខាងយើងបានធ្វើការកែប្រែ extension របស់ឯកសារទៅជា yml វិញ ហើយនៅក្នុងឯកសារនេះគឺត្រូវសរសេរនូវ configuration ជាមួយ H2 Database ដើម្បីអាចភ្ជាប់ទៅ H2 Database បាន។

Spring Boot Config H2 Database

  • រូបភាពខាងក្រោមនេះគឺជាឯកសារដែលជា Main Application នៅក្នុងកម្មវិធី Spring Boot ហើយនៅពេលដែលអ្នកចុចប៊ូតុង ដើម្បីប្រតិបត្តិនូវកម្មវិធី។

Spring Boot Application Starter

  • រូបភាពខាងក្រោមនេះគឺជា Console Logger ដែលកម្មវិធីត្រូវបានប្រតិបត្តិ។

Spring Boot Starter 8090

  • រូបភាពខាងក្រោមនេះគឺនៅពេលកម្មវិធីត្រូវបានប្រតិបត្តិបានជោគជ័យ បន្ទាប់មកទៅបើកមើលលទ្ធផលនៅលើ Browser។ មូលហេតុដែលវាចេញពាក្យ Whitelabel Error Page គឺដោយសារតែអ្នកមិនទាន់បង្កើតនូវ Controller សម្រាប់ទំព័រមួយនេះ។

Spring Boot Starter 8090 Result

  • រូបភាពខាងក្រោមនេះគឺនឹងនាំអ្នកទៅបង្កើតឯកសារមួយមានឈ្មោះថា TestController

Test Contoller Folder

  • ដែលនៅក្នុងឯកសារ TestController នោះគឺនឹងមានជាការបង្កើតនៅ route មួយសម្រាប់ទំព័រ '/testing-page' ហើយមានមុខងារមួយជាប្រភេទ Get

Test Contoller File

  • បន្ទាប់ពីបានបង្កើត Controller មួយរួចហើយធ្វើការប្រតិបត្តិកម្មវិធីសារជាថ្មី ហើយបន្ទាប់ពីប្រតិបត្តិបានជោគជ័យគឺទៅបើកមើលលទ្ធផលនៅទំព័រ '/testing-page' នឹងឃើញលទ្ធផលដូចខាងក្រោម:

Test Contoller File Result

សរុបសេចក្តី

  • បន្ទាប់ពីអ្នកបានសិក្សានូវជំពូកនេះចប់ អ្នកនឹងអាចបង្កើត Project Spring Boot ដោយខ្លួនឯងបាន។