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នេះបានគឺអ្នកត្រូវបន្ថែមនូវ-Xjsr305compiler ដែលមាន 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 ដោយខ្លួនឯងបាន។