Spring Boot Kotlin - ការ Bootstrapping
ជំពូកនេះនឹងពន្យល់អ្នកពីរបៀបក្នុងការ bootstrapping
នៅលើកម្មវិធី Spring Boot។
Spring Initializer
- ដើម្បីអាចបង្កើតនូវ Project Spring Boot មួយបានគឺមានវិធីច្រើន តែនៅក្នុង Tutorial មួយនេះគឺយើងនឹងនាំអ្នកទៅបង្កើត Project Spring Boot នៅលើគេហទំព័រ Spring Initializer។
នៅក្នុងរូបខាងលើគឺអ្នកនឹងបានឃើញនូវផ្ទាំងមួយ ដែលផ្ទាំងមួយនេះគឺប្រើសម្រាប់បង្កើតនូវ 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 ព្រោះវាជៀសវាងការតាមដាននូវកិច្ចការដដែលៗ ហើយវាតាមដានតែកិច្ចការណាដែលត្រូវបានផ្លាស់ប្តូរប៉ុណ្ណោះ ដូច្នេះវាផ្តល់នូវដំណើរការលឿនជាងមុន។
- Maven ជាឧបករណ៍សម្រាប់គ្រប់គ្រង
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
ណាដែលអ្នកចង់ប្រើបាន។
- Group ជាការបញ្ជាក់ឈ្មោះរបស់
Dependencies: នៅក្នុងផ្នែកនេះគឺគេទាមទារឲ្យអ្នកធ្វើការជ្រើសរើសនូវប្រភេទនៃ
dependencies
ដូច្នេះអ្នកអាចរើសនូវdependencies
ដូចក្នុងរូបក៏បានឬក៏រើសតែ Spring Web មួយសិនក៏បាន។
បន្ទាប់ពីនេះអ្នកនឹងឃើញនូវប៊ូតុងនៅខាងក្រោមចំនួនបីបន្ថែមទៀត:
- GENERATE: ជាប៊ូតុងសម្រាប់បង្កើត Project Spring Boot។
- EXPLOER: ជាប៊ូតុងសម្រាប់មើល Structure Project Spring Boot។
- SHARE...: ជាប៊ូតុងសម្រាប់ចែករំលែក Project Spring Boot។
បន្ទាប់ពីចុចប៊ូតុង Generate រួចរាល់ វាផ្តល់
zip file
មួយដូចរូបខាងក្រោម:
- បន្ទាប់មកអ្នកអាចធ្វើការ Extract នូវ
zip file
នោះ ហើយបន្ទាប់គឺបើក IntelliJ IDEA IDE ហើយបើកនូវ Project ដែលអ្នកបាន Extract រួចរាល់នោះ។
- បន្ទាប់ពីបានបើក Project នោះនៅក្នុង IntelliJ IDEA IDE រួចរាល់គឺអ្នកត្រូវធ្វើការរងចាំឲ្យ IntelliJ IDEA IDE ត្រូវធ្វើការ Sync នូវ Project ឲ្យចប់អស់សិន ទើបអ្នកអាចចាប់ផ្តើមអភិវឌ្ឍនូវ Project មួយនេះបាន។
- បន្ទាប់ពី Project ត្រូវបាន Synced រួចរាល់ អ្នកអាចក្រឡេកមើលនូវ Project Structure បន្តិច ដូចរូបខាងក្រោម:
- រូបភាពខាងក្រោមនេះគឺជា Project Structure ដែលត្រូវបាន Extract ចេញពី
zip file
ហើយមិនទាន់បានរៀបចំត្រឹមត្រូវ។
- រូបភាពខាងក្រោមនេះគឺជា Project Structure ដែលត្រូវបានលុបចោលនូវ Folders ឬក៏ Files ដែលឥតប្រយោជន៍ចោល និងបានរៀបចំបានត្រឹមត្រូវ។
- រូបភាពខាងក្រោមនេះគឺជាឯកសារ
build.gradle.kts
ដែលជាឯកសារអ្នកអាចបន្ថែមនូវdependencies
ចូលបន្ថែមឬក៏កែប្រែ Version នៃ Java, Kotlin, Spring Boot។ល។
- ស្វែងយល់បន្ថែមពីឯកសារ
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
។- kotlin-stdlib-jdk8: ជាស្តង់ដារ
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 បាន។
- រូបភាពខាងក្រោមនេះគឺជាឯកសារដែលជា Main Application នៅក្នុងកម្មវិធី Spring Boot ហើយនៅពេលដែលអ្នកចុចប៊ូតុង ▶ ដើម្បីប្រតិបត្តិនូវកម្មវិធី។
- រូបភាពខាងក្រោមនេះគឺជា Console Logger ដែលកម្មវិធីត្រូវបានប្រតិបត្តិ។
- រូបភាពខាងក្រោមនេះគឺនៅពេលកម្មវិធីត្រូវបានប្រតិបត្តិបានជោគជ័យ បន្ទាប់មកទៅបើកមើលលទ្ធផលនៅលើ Browser។ មូលហេតុដែលវាចេញពាក្យ
Whitelabel Error Page
គឺដោយសារតែអ្នកមិនទាន់បង្កើតនូវ Controller សម្រាប់ទំព័រមួយនេះ។
- រូបភាពខាងក្រោមនេះគឺនឹងនាំអ្នកទៅបង្កើតឯកសារមួយមានឈ្មោះថា TestController។
- ដែលនៅក្នុងឯកសារ TestController នោះគឺនឹងមានជាការបង្កើតនៅ route មួយសម្រាប់ទំព័រ
'/testing-page'
ហើយមានមុខងារមួយជាប្រភេទ Get។
- បន្ទាប់ពីបានបង្កើត Controller មួយរួចហើយធ្វើការប្រតិបត្តិកម្មវិធីសារជាថ្មី ហើយបន្ទាប់ពីប្រតិបត្តិបានជោគជ័យគឺទៅបើកមើលលទ្ធផលនៅទំព័រ
'/testing-page'
នឹងឃើញលទ្ធផលដូចខាងក្រោម:
សរុបសេចក្តី
- បន្ទាប់ពីអ្នកបានសិក្សានូវជំពូកនេះចប់ អ្នកនឹងអាចបង្កើត Project Spring Boot ដោយខ្លួនឯងបាន។