Spring Boot Application Properties සිංහලෙන් - Configuration Guide

Spring Boot Application Properties SC Guide: ඔබගේ App එකට ජීවය දෙමු!
ආයුබෝවන් යාළුවනේ, කොහොමද ඉතින් ඔයාලට? කට්ටියම සෙට් වෙලා ඇති කියලා හිතනවා software develop කරන අලුත් දෙයක් ඉගෙන ගන්න. අද අපි කතා කරන්නේ Spring Boot application එකක් develop කරන ඕනෑම කෙනෙක්ට අත්යවශ්ය, ඒ වගේම ජීවිතේ ලේසි කරන සුපිරිම feature එකක් ගැන. ඒ තමයි Application Properties!
ගොඩක් වෙලාවට අපි applications හදනකොට database connections, server ports, file paths වගේ දේවල් code එක ඇතුලෙම hardcode කරනවා නේද? එහෙම කරහම මොකද වෙන්නේ? හිතන්නකෝ, ඔබගේ application එක development environment එකේ ඉඳන් production environment එකට deploy කරනවා කියලා. එතකොට database server එකේ IP address එක, port number එක වගේ දේවල් වෙනස් වෙනවා. එතකොට ආයෙත් code එක වෙනස් කරලා, compile කරලා deploy කරන්න වෙනවා. මේක ටිකක් නරක වැඩක් නේද? වෙලාවත් නාස්තියක්.
ඔන්න ඔය වගේ ප්රශ්න වලට තියෙන ලස්සනම විසඳුම තමයි Spring Boot වල application.properties
නැත්නම් application.yml
කියන්නේ. මේවා හරහා අපිට පුළුවන් application එකේ හැසිරීම (behavior) externalized කරන්න, ඒ කියන්නේ code එකට හානියක් නොකර එළියෙන් වෙනස් කරන්න. හරියට රිමෝට් කන්ට්රෝල් එකකින් TV එකක channel එක මාරු කරනවා වගේ වැඩක්!
අද මේ blog post එකෙන් අපි මේ application properties කියන්නේ මොනවාද, ඒවා කොහොමද use කරන්නේ, වගේම .properties
file එකයි .yml
file එකයි අතර තියෙන වෙනස මොකක්ද කියලත් බලමු. ඒ වගේම, අපි පොඩි practical exercise එකකුත් කරලා බලමු, අපේ Spring Boot application එකක server port එකයි application name එකයි කොහොමද මේ properties හරහා වෙනස් කරන්නේ කියලා. එහෙනම්, අපි වැඩේට බහිමු!
Application Properties කියන්නේ මොනවාද?
සරලවම කිව්වොත්, Application Properties කියන්නේ අපේ Spring Boot application එකේ Configuration data store කරන තැනක්. මේවා සාමාන්යයෙන් Key-Value pairs විදිහට තියෙන්නේ. උදාහරණයක් විදිහට, server.port=8080
කියන එකේ server.port
කියන්නේ key එක, 8080
කියන්නේ value එක. මේ key-value pairs application එක start වෙනකොට Spring Boot framework එකෙන් load කරගන්නවා.
මේ properties use කරන එකෙන් අපිට ලැබෙන වාසි නම් ගොඩයි:
- Flexibility (නම්යශීලී බව): එකම code base එකකින් විවිධ environments වලට (development, testing, production) deploy කරන්න පුළුවන්. Database credentials, API keys, file paths වගේ දේවල් environment එක අනුව වෙනස් කරන්න පුළුවන්.
- Maintainability (නඩත්තු කිරීමේ පහසුව): Configuration වෙනස් කරන්න code compile කරන්න ඕනේ නැහැ. Text file එකක් edit කරනවා වගේ පහසුවෙන් කරන්න පුළුවන්.
- Security (ආරක්ෂාව): Sensitive data (passwords වගේ) code එකේ hardcode කරනවාට වඩා, external configuration එකකින් Manage කරන එක ආරක්ෂිතයි. (ඒත් production environment වලදී secrets management solutions පාවිච්චි කරන්න ඕනේ, මේවා මේ development වලට හරි).
Spring Boot, application එක run වෙනකොට classpath එකේ තියෙන application.properties
(නැත්නම් application.yml
) file එක automatically load කරනවා. මේක තමයි අපේ application වලට 'ජීවය' දෙන්නේ!
application.properties ද? application.yml ද? - හොඳම එක මොකක්ද?
Spring Boot අපිට configuration manage කරන්න ප්රධාන formats දෙකක් දෙනවා: .properties
සහ .yml
(YAML). මේ දෙකම එකම කාර්යය ඉටු කරනවා වුණත්, ඒවායේ syntax එකේ පොඩි වෙනස්කම් තියෙනවා. බලමු මොනවද මේවා කියලා.
1. application.properties
මේක තමයි Spring Boot වල default format එක. මේවා Key-Value pairs විදිහට, එක line එකකට එක property එකක් විදිහට ලියනවා.
උදාහරණයක්:
server.port=8080
spring.application.name=MySpringBootApp
my.custom.property=Hello World
වාසි:
- සරලයි, තේරුම් ගන්න ලේසියි.
- පරණ Java applications වලටත් මේ format එක familiar වෙන්න පුළුවන්.
අවාසි:
- සමහර වෙලාවට nested properties තියෙනකොට කියවන්න අමාරු වෙන්න පුළුවන් (හිතන්න
spring.datasource.url
,spring.datasource.username
වගේ ඒවා). - Code එක වගේ, indentation එක ගැන හිතන්න ඕනේ නැහැ, ඒක වැරදෙන්න තියෙන ඉඩ අඩුයි.
2. application.yml (YAML)
YAML කියන්නේ 'YAML Ain't Markup Language' කියන එකේ කෙටි යෙදුම. මේක properties වලට වඩා structured, hierarchical format එකක්. ගොඩක් දෙනෙක් YAML වලට කැමතියි, මොකද ඒක කියවන්න පහසුයි.
උදාහරණයක්:
server:
port: 8080
spring:
application:
name: MySpringBootApp
my:
custom:
property: Hello World
වාසි:
- Structure එකක් තියෙන නිසා කියවන්න පහසුයි.
- Properties ගොඩක් තියෙනකොට organized විදිහට තියාගන්න පුළුවන්.
- JSON වගේ format වලටත් මේක convert කරන්න ලේසියි.
අවාසි:
- Indentation එක හරියට නැත්නම් errors එන්න පුළුවන්. (බලන්න, Python වගේම space/tab ගැන සැලකිලිමත් වෙන්න වෙනවා).
- අලුතින් පටන් ගන්න අයට ටිකක් familiar වෙන්න කාලය යන්න පුළුවන්.
ඉතින්, මේ දෙකෙන් හොඳම එක මොකක්ද? ඒක ඉතින් ඔබගේ preference එක මත තීරණය වෙන දෙයක්. හැබැයි අද කාලේ ගොඩක් applications වලට YAML use කරනවා, මොකද ඒකේ readability එක වැඩියි.
Core Properties වෙනස් කරමු - Practical Exercise එකක්!
දැන් අපි බලමු කොහොමද මේ properties use කරලා අපේ application එකේ default behaviors වෙනස් කරන්නේ කියලා. අපි Spring Boot app එකක server port එකයි, application name එකයි වෙනස් කරලා බලමු.
Step 1: Spring Boot Project එකක් හදාගමු
මුලින්ම, අපි Spring Initializr (start.spring.io
) එකට ගිහින් අලුත් Spring Boot project එකක් හදාගමු. ඔබට Maven Project එකක්, Java version එකක් තෝරගන්න පුළුවන්. Dependencies විදිහට Spring Web එක add කරන්න අමතක කරන්න එපා.
Project එක download කරලා, ඔබේ IDE (IntelliJ IDEA, VS Code, Eclipse වගේ එකක) open කරගන්න.
Step 2: default port එක බලමු
ඔබ project එක run කරලා බැලුවොත්, console එකේ මේ වගේ දෙයක් පෙනෙයි:
Tomcat started on port(s): 8080 (http) with context path ''
මේකෙන් කියන්නේ අපේ application එක 8080 port එකේ run වෙනවා කියලා. මේක තමයි Spring Boot වල default HTTP port එක.
Step 3: Server Port එක වෙනස් කරමු
අපි හිතමු අපිට application එක 8080 port එකේ නැතුව, 8081 port එකේ run කරන්න ඕනේ කියලා. ඒකට කරන්න තියෙන්නේ මෙච්චරයි:
application.properties හරහා:
ඔබේ project එකේ src/main/resources
folder එක ඇතුලේ application.properties
කියන file එක open කරලා, මේ line එක add කරන්න:
server.port=8081
application.yml හරහා:
ඔබ .yml
format එකට කැමති නම්, application.properties
file එක delete කරලා, ඒ වෙනුවට application.yml
කියන file එක හදලා, මේ code එක add කරන්න:
server:
port: 8081
දැන් project එක ආයෙත් run කරලා බලන්න. Console එකේ මේ වගේ දෙයක් පෙනෙයි:
Tomcat started on port(s): 8081 (http) with context path ''
දැන් අපේ application එක 8081 port එකේ run වෙනවා. නියමයි නේද? Code එකේ එක line එකක්වත් වෙනස් නොකර port එක වෙනස් කළා!
Step 4: Application Name එක වෙනස් කරමු
Spring Boot application එකකට නමක් දෙන්නත් පුළුවන්. මේ නම logs වල, monitoring tools වල පෙන්නනවා. Default විදිහට මේකට නමක් නැහැ. අපි මේකට නමක් දෙමු.
application.properties හරහා:
application.properties
file එකට මේ line එක add කරන්න:
spring.application.name=MyAwesomeApp
application.yml හරහා:
application.yml
file එකට මේ code එක add කරන්න:
spring:
application:
name: MyAwesomeApp
දැන් project එක run කරලා බලන්න. Console output එකේ මේ වගේ දෙයක් මුලින්ම පෙනෙයි:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.x.x)
2023-10-27 10:30:00.123 INFO 12345 --- [ main] c.e.m.MyAwesomeAppApplication : Starting MyAwesomeAppApplication using Java 17...
ඔබට පෙනෙයිද, Starting MyAwesomeAppApplication
කියලා තැන අපේ අලුත් නම ආවා කියලා? මේකෙන් අපේ application එක identify කරන්න ලේසියි.
Custom Properties සහ Profiles (ටිකක් ඇඩ්වාන්ස් වෙමු!)
දැන් ඔබ default properties වෙනස් කරන හැටි දන්නවා. හැබැයි අපිට අපේම custom properties හදන්නත් පුළුවන්. උදාහරණයක් විදිහට, ඔබට application එකේ welcome message එකක් properties වලින් ගන්න ඕනේ නම්, මෙහෙම කරන්න පුළුවන්:
application.properties/application.yml වලට:
app.welcome.message=සුභ දවසක්! Spring Boot වෙත සාදරයෙන් පිළිගනිමු!
Java Code එකේ:
ඔබට මේ property එක Java code එක ඇතුලට ගන්න @Value
annotation එක use කරන්න පුළුවන්:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class MyCustomConfig {
@Value("${app.welcome.message}")
private String welcomeMessage;
public void printWelcomeMessage() {
System.out.println(welcomeMessage);
}
}
මේ වගේම, Spring Boot වල Profiles කියන concept එකක් තියෙනවා. මේකෙන් අපිට පුළුවන් different environments (development, production, testing) වලට වෙනස් වෙනස් configuration files හදාගන්න. උදාහරණයක් විදිහට application-dev.properties
සහ application-prod.properties
වගේ. මේ ගැන අපි වෙනම blog post එකකින් කතා කරමු.
අවසාන වශයෙන්...
ඉතින් යාළුවනේ, Application Properties කියන්නේ Spring Boot applications වලට කොච්චර වැදගත්ද කියලා දැන් ඔබට පැහැදිලියි නේද? මේවා හරහා අපිට පුළුවන් අපේ applications වඩාත් flexible, maintainable සහ scalable කරන්න. Code එකේ එක line එකක්වත් වෙනස් නොකර configuration වෙනස් කරන්න පුළුවන් වීම කියන්නේ developer කෙනෙක් විදිහට අපේ වැඩ ගොඩක් ලේසි වෙනවා කියන එකයි.
අද අපි server port එකයි application name එකයි වෙනස් කළා වගේම, ඔබට පුළුවන් තවත් properties ගැන Spring Boot documentation එකෙන් හොයලා බලලා experiment කරන්න. spring.datasource.*
(database configuration), spring.mvc.*
(MVC settings) වගේ properties ගොඩක් තියෙනවා. ඒවා ගැනත් හොයලා බලන්න.
ඔබට මේ blog post එකෙන් අලුත් දෙයක් ඉගෙන ගන්න ලැබුණා නම්, අමතක නොකර පහළ comment section එකේ ඔබේ අදහස් කියන්න. මේ වගේම තවත් technical topics ගැන දැනගන්න කැමති නම්, ඒ ගැනත් mention කරන්න. අපි ඊළඟ blog post එකෙන් හමුවෙමු! Happy Coding!