স্প্রিং বুট অ্যাপ্লিকেশনে কনফিগারেশন সেটিংস সম্পূর্ণভাবে application.properties বা application.yml ফাইলের মাধ্যমে পরিচালিত হয়। এই কনফিগারেশন ফাইলগুলি অ্যাপ্লিকেশনের বিভিন্ন সেটিংস এবং প্রোপার্টিজ সুনির্দিষ্টভাবে নির্ধারণ করতে ব্যবহৃত হয়। স্প্রিং বুট আপনাকে আপনার অ্যাপ্লিকেশনের বিভিন্ন দিক যেমন ডেটাবেজ কনফিগারেশন, লোগিং, সার্ভার সেটিংস ইত্যাদি কাস্টমাইজ করার জন্য সহজ কনফিগারেশন প্রদান করে।
স্প্রিং বুটে application.properties এবং application.yml দুটি ফাইলের মাধ্যমে কনফিগারেশন করা যায়, তবে YAML ফাইলের ব্যবহার বেশি জনপ্রিয় হয়ে উঠেছে তার স্ট্রাকচারের কারণে।
application.properties
application.properties একটি সহজ ফরম্যাটে কনফিগারেশন সেটিংস সংরক্ষণ করতে ব্যবহৃত হয়। এটি স্প্রিং বুটের ডিফল্ট কনফিগারেশন ফাইল এবং এখানে প্রতিটি প্রোপার্টি এক লাইনে লেখা হয়।
উদাহরণ:
# সার্ভার কনফিগারেশন
server.port=8081
# ডেটাবেজ কনফিগারেশন
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
# JPA কনফিগারেশন
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
# লোগিং কনফিগারেশন
logging.level.org.springframework.web=DEBUG
logging.level.com.example=INFO
# স্প্রিং প্রোফাইল কনফিগারেশন
spring.profiles.active=dev
উপরের উদাহরণে, server.port দ্বারা সার্ভারের পোর্ট নম্বর নির্ধারণ করা হয়েছে, spring.datasource দিয়ে ডেটাবেজের সংযোগ ঠিকানা নির্ধারণ করা হয়েছে এবং spring.jpa.hibernate.ddl-auto দিয়ে Hibernate এর ডেটাবেজ স্কিমা আপডেটের কৌশল সুনির্দিষ্ট করা হয়েছে।
application.yml
YAML (YAML Ain't Markup Language) একটি হিউম্যান-রিডেবল ডাটা সিরিয়ালাইজেশন ফরম্যাট যা ডেটাকে হায়ারার্কিক্যালভাবে দেখাতে সক্ষম এবং এর চমৎকার ইন্ডেন্টেশন স্ট্রাকচার এর ব্যবহারের সুবিধা বাড়ায়। স্প্রিং বুটে YAML ফাইল ব্যবহার করা অনেক বেশি সুবিধাজনক হয়ে থাকে, বিশেষ করে যখন কনফিগারেশনে অনেক স্তর বা নেস্টেড ডেটা থাকে।
উদাহরণ:
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: root
jpa:
hibernate:
ddl-auto: update
show-sql: true
logging:
level:
org.springframework.web: DEBUG
com.example: INFO
spring:
profiles:
active: dev
YAML ফাইলের মধ্যে, ডাটা ভ্যালু গুলি হায়ারার্কিক্যাল স্ট্রাকচারে রাখা হয় এবং ইনডেন্টেশন (স্পেস) এর মাধ্যমে সম্পর্ক নির্ধারণ করা হয়। YAML ফাইলটি আরও পরিস্কার ও সহজ পাঠযোগ্য করে তোলে, বিশেষ করে যখন কনফিগারেশনে অনেক সেকশন থাকে।
application.properties এবং application.yml এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | application.properties | application.yml |
|---|---|---|
| স্টাইল | এক লাইনে কনফিগারেশন প্রদান করা হয় | হায়ারার্কিক্যাল স্ট্রাকচারে কনফিগারেশন প্রদান করা হয় |
| পাঠযোগ্যতা | সোজা কিন্তু কিছুটা কম পাঠযোগ্য | মানব-রিডেবল এবং আরও সুসংগঠিত |
| ইন্ডেন্টেশন | ইন্ডেন্টেশন ব্যবহার করা হয় না | ইন্ডেন্টেশন ব্যবহার করা হয় |
| ব্যবহার | ছোট এবং সরল কনফিগারেশনের জন্য সুবিধাজনক | বড় এবং হায়ারার্কিক্যাল কনফিগারেশনের জন্য সুবিধাজনক |
স্প্রিং বুট কনফিগারেশন প্রোপার্টিজের কিছু সাধারণ উদাহরণ
১. সার্ভার কনফিগারেশন
server.port=8080
বা YAML ফরম্যাটে:
server:
port: 8080
২. ডেটাবেজ কনফিগারেশন
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
বা YAML ফরম্যাটে:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: root
৩. JPA কনফিগারেশন
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
বা YAML ফরম্যাটে:
spring:
jpa:
hibernate:
ddl-auto: update
show-sql: true
৪. লোগিং কনফিগারেশন
logging.level.org.springframework.web=DEBUG
বা YAML ফরম্যাটে:
logging:
level:
org.springframework.web: DEBUG
৫. স্প্রিং প্রোফাইল কনফিগারেশন
spring.profiles.active=dev
বা YAML ফরম্যাটে:
spring:
profiles:
active: dev
স্প্রিং বুট প্রোফাইল
স্প্রিং বুটের application.properties বা application.yml ফাইলের মধ্যে প্রোফাইল ভিত্তিক কনফিগারেশন ব্যবহার করা যেতে পারে। বিভিন্ন পরিবেশে যেমন dev, prod, test ইত্যাদির জন্য আলাদা কনফিগারেশন নির্ধারণ করা যায়।
উদাহরণ:
# application-dev.properties
server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/devdb
# application-prod.properties
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/proddb
এখন application.properties ফাইলে spring.profiles.active=dev বা spring.profiles.active=prod সেট করে আপনি ডেভেলপমেন্ট বা প্রোডাকশন পরিবেশের জন্য কনফিগারেশন নির্ধারণ করতে পারেন।
সারসংক্ষেপ
Spring Boot এর application.properties এবং application.yml ফাইলের মাধ্যমে অ্যাপ্লিকেশনের কনফিগারেশন খুবই সহজ এবং পঠনযোগ্য হয়ে ওঠে। আপনি যখন স্প্রিং বুট অ্যাপ্লিকেশন তৈরি করবেন, তখন আপনি এই ফাইলগুলির মাধ্যমে সার্ভার সেটিংস, ডেটাবেজ কনফিগারেশন, প্রোফাইল কনফিগারেশন, লোগিং কনফিগারেশন ইত্যাদি নির্ধারণ করতে পারবেন। YAML ফাইলের স্ট্রাকচার সাধারণত পরিষ্কার এবং হায়ারার্কিক্যাল কনফিগারেশন ব্যবস্থার জন্য বেশি সুবিধাজনক, তবে application.properties ফাইলটি ছোট এবং সরল কনফিগারেশন ব্যবস্থার জন্য আদর্শ।
Spring Boot অ্যাপ্লিকেশনে কনফিগারেশন সেটিংস সংরক্ষণের জন্য দুটি সাধারণ ফাইল ব্যবহৃত হয়: application.properties এবং application.yml। উভয় ফাইলই একই কাজ করে, তবে তাদের সিনট্যাক্স এবং ফরম্যাটে কিছু পার্থক্য রয়েছে। এই ফাইলগুলোতে অ্যাপ্লিকেশনের কনফিগারেশন, প্রোপার্টি, ডেটাবেস সেটিংস, সিকিউরিটি কনফিগারেশন এবং অন্যান্য প্রয়োজনীয় কনফিগারেশন রাখা হয়।
application.properties ফাইল
application.properties একটি সাধারণ প্রপার্টি ফাইল যেখানে কনফিগারেশন স্ট্রিংয়ের মাধ্যমে প্রতিটি প্যারামিটার সংরক্ষিত থাকে। এটি ক্লাসিক Java properties ফাইলের মতই কাজ করে।
application.properties ফাইলের কনফিগারেশন উদাহরণ
# Database Configuration
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
# Server Configuration
server.port=8080
server.servlet.context-path=/myapp
# Logging Configuration
logging.level.org.springframework=INFO
logging.level.com.example=DEBUG
# Custom Configuration
app.name=My Spring Boot Application
app.version=1.0.0
ব্যাখ্যা:
spring.datasource: ডেটাবেস কানেকশন সেটিংস যেমন URL, ইউজারনেম এবং পাসওয়ার্ড।spring.jpa: Hibernate বা JPA কনফিগারেশন।server.port: সার্ভারের পোর্ট নম্বর কনফিগারেশন।logging.level: লগিং লেভেল কনফিগারেশন (INFO, DEBUG, ERROR ইত্যাদি)।- Custom Configuration: অ্যাপ্লিকেশনের কাস্টম প্যারামিটার যেমন অ্যাপের নাম এবং ভার্সন।
application.yml ফাইল
application.yml YAML (YAML Ain't Markup Language) ফরম্যাটে লেখা একটি কনফিগারেশন ফাইল। এটি পঠনযোগ্যতা এবং স্ট্রাকচারড ডেটার জন্য অধিক সুবিধাজনক। YAML ফাইলগুলো ইনডেন্টেশন এবং হায়ারার্কির মাধ্যমে প্যারামিটারগুলো সংরক্ষণ করে।
application.yml ফাইলের কনফিগারেশন উদাহরণ
# Database Configuration
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: password
jpa:
hibernate:
ddl-auto: update
show-sql: true
# Server Configuration
server:
port: 8080
servlet:
context-path: /myapp
# Logging Configuration
logging:
level:
org.springframework: INFO
com.example: DEBUG
# Custom Configuration
app:
name: My Spring Boot Application
version: 1.0.0
ব্যাখ্যা:
spring.datasource: ডেটাবেস কনফিগারেশন এর মতোইapplication.propertiesএর মতো YAML ফরম্যাটে কনফিগার করা হয়েছে।server.port: YAML স্টাইলে পোর্ট নম্বর এবং কনটেক্সট-পথ।logging.level: লগিং লেভেল কনফিগারেশন একইভাবে YAML ফরম্যাটে।- Custom Configuration: কাস্টম প্যারামিটার
app.nameএবংapp.versionYAML স্টাইলে।
application.properties এবং application.yml এর মধ্যে পার্থক্য
| বিষয় | application.properties | application.yml |
|---|---|---|
| ফরম্যাট | সাধারণ key=value ফরম্যাট | YAML ফরম্যাট, হায়ারার্কিক্যাল স্ট্রাকচার |
| পঠনযোগ্যতা | তুলনামূলকভাবে কম পঠনযোগ্য | অধিক পঠনযোগ্য এবং সুন্দর স্ট্রাকচার |
| ইনডেন্টেশন | ইনডেন্টেশন প্রয়োজন নেই | ইনডেন্টেশন প্রয়োজন (এটা YAML এর বৈশিষ্ট্য) |
| স্ট্রাকচার | সোজা, এক্সপ্লিসিট প্যারামিটার | হায়ারার্কিক্যাল (নেস্টেড) স্ট্রাকচার |
| ব্যবহার | সাধারণ কনফিগারেশনে সুবিধাজনক | কমপ্লেক্স কনফিগারেশনে সহজ এবং স্পষ্ট |
কেন application.properties এবং application.yml ব্যবহার করা হয়?
১. কনফিগারেশন এক্সটার্নালাইজেশন (Externalized Configuration)
এই ফাইলগুলোর মাধ্যমে অ্যাপ্লিকেশনের কনফিগারেশন এক্সটার্নালাইজড করা হয়, অর্থাৎ কোডের বাইরে কনফিগারেশন রাখা হয়, যাতে কোডে কোনো পরিবর্তন না করে সেটিংস পরিবর্তন করা যায়। এতে অ্যাপ্লিকেশনটি পরিবেশ (environment) অনুযায়ী কনফিগার করা সহজ হয়।
২. পঠনযোগ্যতা এবং রক্ষণাবেক্ষণ
YAML ফাইলের স্ট্রাকচার এবং ইনডেন্টেশন পদ্ধতি কনফিগারেশনকে আরও পঠনযোগ্য করে তোলে। বড় প্রকল্পের জন্য YAML ফাইল ব্যবহারে সহজে কনফিগারেশন বোঝা যায়।
৩. ডিফল্ট কনফিগারেশন প্রদান
Spring Boot অ্যাপ্লিকেশন কনফিগারেশন প্রোপার্টিজের জন্য কিছু ডিফল্ট মান প্রদান করে, যেমন ডেটাবেস সেটিংস, সার্ভার পোর্ট, লগিং লেভেল ইত্যাদি, যা ডেভেলপারদের সময় সাশ্রয় করে।
৪. অ্যাপ্লিকেশন সেটিংস ব্যবস্থাপনা
Spring Boot অ্যাপ্লিকেশন কনফিগারেশন ফাইল ব্যবহারের মাধ্যমে বিভিন্ন এনভায়রনমেন্ট (ডেভেলপমেন্ট, টেস্টিং, প্রোডাকশন) অনুযায়ী অ্যাপ্লিকেশনের সেটিংস কনফিগার করা যায়।
সারাংশ
application.properties এবং application.yml হল Spring Boot অ্যাপ্লিকেশনের কনফিগারেশন ফাইল, যেখানে বিভিন্ন সেটিংস এবং প্রোপার্টি সংরক্ষণ করা হয়। application.properties সাধারণত সোজা কনফিগারেশন পদ্ধতি হলেও, application.yml একটি স্ট্রাকচার্ড এবং অধিক পঠনযোগ্য ফরম্যাট সরবরাহ করে। যেকোনো একটি ফাইল ব্যবহারের মাধ্যমে আপনি Spring Boot অ্যাপ্লিকেশনের কনফিগারেশন এবং পরিবেশ অনুযায়ী সেটিংস নির্ধারণ করতে পারবেন।
স্প্রিং বুট একটি শক্তিশালী ফ্রেমওয়ার্ক, যা সহজেই কাস্টম কনফিগারেশন প্রপার্টিজ তৈরি ও পরিচালনা করার সুবিধা প্রদান করে। এটি বিভিন্ন কনফিগারেশন সেটিংস সেন্ট্রালাইজড ফাইলে রাখার মাধ্যমে অ্যাপ্লিকেশনের পরিবেশ বা প্রয়োজনে অনুসারে কাস্টমাইজড সেটিংস ব্যবস্থাপনা করে।
কাস্টম কনফিগারেশন প্রপার্টিজ স্প্রিং বুট অ্যাপ্লিকেশনের বিভিন্ন অংশের জন্য তৈরি করা যেতে পারে, যেমন ডাটাবেস, সার্ভিস, API অথবা কোনো বাহ্যিক সিস্টেমের জন্য। স্প্রিং বুটে কাস্টম কনফিগারেশন প্রপার্টিজ ব্যবহারের মাধ্যমে কোডের পুনরাবৃত্তি কমানো যায় এবং কোড আরও পরিস্কার এবং মডুলার করা যায়।
কাস্টম কনফিগারেশন প্রপার্টিজ তৈরি করা
১. কাস্টম প্রপার্টি ফাইল তৈরি করা
স্প্রিং বুটে কাস্টম কনফিগারেশন প্রপার্টিজ সাধারণত application.properties বা application.yml ফাইলে রাখা হয়। নতুন কাস্টম প্রপার্টি তৈরি করতে আপনাকে আপনার কনফিগারেশন ফাইলে নতুন প্রপার্টি যুক্ত করতে হবে।
application.properties উদাহরণ:
myapp.config.name=MyApplication
myapp.config.version=1.0.0
myapp.config.description=This is a custom Spring Boot app configuration
application.yml উদাহরণ:
myapp:
config:
name: MyApplication
version: 1.0.0
description: This is a custom Spring Boot app configuration
এখানে myapp.config.name, myapp.config.version, এবং myapp.config.description কাস্টম প্রপার্টি তৈরি করা হয়েছে।
২. কাস্টম কনফিগারেশন ক্লাস তৈরি করা
স্প্রিং বুটে কাস্টম প্রপার্টি ফাইলটি ক্লাসের মাধ্যমে মডেল করা হয়। এটি করার জন্য @ConfigurationProperties অ্যানোটেশন ব্যবহার করা হয়। এই অ্যানোটেশনটি স্প্রিং বুটকে নির্দেশ দেয় যে, এই ক্লাসটি কনফিগারেশন প্রপার্টি মডেল করবে এবং যেকোনো application.properties বা application.yml ফাইলের প্রপার্টি এর সাথে মেলানো হবে।
কাস্টম কনফিগারেশন ক্লাস:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "myapp.config")
public class AppConfig {
private String name;
private String version;
private String description;
// getters and setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
এখানে @ConfigurationProperties(prefix = "myapp.config") অ্যানোটেশনটি application.properties বা application.yml ফাইল থেকে myapp.config এর সমস্ত প্রপার্টি গুলি এই ক্লাসে ম্যানেজ করবে।
৩. কাস্টম কনফিগারেশন প্রপার্টি ব্যবহার করা
কাস্টম কনফিগারেশন ক্লাসটি স্প্রিং কন্টেইনারে একটি
স্প্রিং বুট (Spring Boot) অ্যাপ্লিকেশনের উন্নয়ন এবং ডিপ্লয়মেন্ট প্রক্রিয়ায় Environment-specific কনফিগারেশন ব্যবহারের জন্য Profiles অত্যন্ত গুরুত্বপূর্ণ একটি বৈশিষ্ট্য। প্রোফাইল ব্যবহার করে আপনি অ্যাপ্লিকেশনটিকে বিভিন্ন পরিবেশে কনফিগার করতে পারেন, যেমন ডেভেলপমেন্ট, টেস্টিং, প্রোডাকশন ইত্যাদি। এটি অ্যাপ্লিকেশন কনফিগারেশনে পরিবেশ অনুযায়ী ভিন্নতা আনার জন্য সহজ এবং কার্যকরী উপায়।
স্প্রিং বুটের প্রোফাইল বৈশিষ্ট্য আপনাকে বিভিন্ন কনফিগারেশন ফাইল, অ্যাপ্লিকেশন প্রোপার্টি, বা যেকোনো কনফিগারেশন সেটিংস পরিবেশ অনুসারে পরিবর্তন করার সুবিধা দেয়। এর মাধ্যমে আপনি অ্যাপ্লিকেশনকে একাধিক পরিবেশে পরিচালনা করতে পারেন, যা ডেভেলপমেন্ট থেকে প্রোডাকশন পর্যন্ত সমন্বিতভাবে কার্যকরী।
স্প্রিং বুট প্রোফাইল কী?
স্প্রিং বুট প্রোফাইল (Profiles) হল একটি বৈশিষ্ট্য যা বিভিন্ন পরিবেশে কনফিগারেশন ভিন্নভাবে প্রয়োগ করতে সহায়তা করে। প্রোফাইলের মাধ্যমে আপনি কনফিগারেশন ফাইল বা বৈশিষ্ট্যগুলিকে পরিবেশ অনুসারে আলাদা করে রাখতে পারেন। যেমন, ডেভেলপমেন্ট পরিবেশে আপনি একটি ডাটাবেস ব্যবহার করতে পারেন, আর প্রোডাকশনে অন্য একটি।
Profiles এর মাধ্যমে কনফিগারেশন ব্যবস্থাপনা
স্প্রিং বুটে প্রোফাইল ব্যবহারের জন্য প্রথমে আপনার অ্যাপ্লিকেশন প্রোপার্টি বা ইয়ামল ফাইল (YAML) এ বিভিন্ন প্রোফাইলের জন্য কনফিগারেশন সংজ্ঞায়িত করতে হবে।
@Profile অ্যানোটেশন
স্প্রিং বুটের @Profile অ্যানোটেশন ব্যবহার করে আপনি স্পেসিফিক প্রোফাইলের জন্য Bean তৈরি বা নিষ্ক্রিয় করতে পারেন। উদাহরণস্বরূপ, কোনো Bean শুধুমাত্র ডেভেলপমেন্ট প্রোফাইলে কাজ করবে এবং অন্য প্রোফাইলে কাজ করবে না।
@Configuration
@Profile("development")
public class DevelopmentConfig {
@Bean
public DataSource dataSource() {
return new HikariDataSource();
}
}
এখানে @Profile("development") দ্বারা স্পষ্টভাবে বলা হচ্ছে যে, এই কনফিগারেশনটি শুধুমাত্র development প্রোফাইলে সক্রিয় থাকবে।
application.properties বা application.yml এ প্রোফাইল কনফিগারেশন
স্প্রিং বুট অ্যাপ্লিকেশন প্রোপার্টি ফাইলের মাধ্যমে আপনি বিভিন্ন প্রোফাইলের জন্য আলাদা কনফিগারেশন প্রদান করতে পারেন। আপনি application.properties বা application.yml ফাইল ব্যবহার করে প্রোফাইল-বিশেষ কনফিগারেশন লিখতে পারেন।
application.properties উদাহরণ
# Default profile (dev environment)
spring.profiles.active=dev
# Database configuration for development
spring.datasource.url=jdbc:h2:mem:devdb;DB_CLOSE_DELAY=-1
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
# Production profile
---
spring.profiles.active=prod
spring.datasource.url=jdbc:mysql://prod-db-host/proddb
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.username=produser
spring.datasource.password=prodpassword
এখানে দুইটি আলাদা প্রোফাইলের জন্য ডেটাবেস কনফিগারেশন রয়েছে। spring.profiles.active=dev দিয়ে ডেভেলপমেন্ট প্রোফাইলটি সক্রিয় করা হয়েছে। পরবর্তী অংশে প্রোডাকশন প্রোফাইলের জন্য আলাদা কনফিগারেশন রয়েছে।
application.yml উদাহরণ
spring:
profiles:
active: dev
---
spring:
profiles: dev
datasource:
url: jdbc:h2:mem:devdb
driverClassName: org.h2.Driver
username: sa
password: password
---
spring:
profiles: prod
datasource:
url: jdbc:mysql://prod-db-host/proddb
driverClassName: com.mysql.cj.jdbc.Driver
username: produser
password: prodpassword
এখানে YAML ফাইলের মধ্যে আলাদা প্রোফাইলের জন্য ডেটাবেস কনফিগারেশন দেওয়া হয়েছে।
কিভাবে প্রোফাইল সক্রিয় করবেন?
স্প্রিং বুট অ্যাপ্লিকেশন চালানোর সময় আপনি কোনো নির্দিষ্ট প্রোফাইল সক্রিয় করতে পারেন। এটি বিভিন্ন ভাবে করা যেতে পারে:
- application.properties বা application.yml ফাইলে
spring.profiles.activeপ্রপার্টি ব্যবহার করা। কমান্ড লাইন আর্গুমেন্ট (Command Line Arguments) দিয়ে:
java -jar myapp.jar --spring.profiles.active=prodEnvironment Variable দিয়ে:
export SPRING_PROFILES_ACTIVE=prod
প্রোফাইলের মাধ্যমে Bean কনফিগারেশন
আপনি যদি @Profile অ্যানোটেশন ব্যবহার করেন, তবে স্প্রিং কনটেইনার শুধুমাত্র সক্রিয় প্রোফাইলের জন্য কনফিগার করা Bean গুলো তৈরি করবে। উদাহরণস্বরূপ:
@Configuration
@Profile("dev")
public class DevConfig {
@Bean
public DataSource dataSource() {
return new HikariDataSource();
}
}
@Configuration
@Profile("prod")
public class ProdConfig {
@Bean
public DataSource dataSource() {
return new HikariDataSource();
}
}
এখানে ডেভেলপমেন্ট এবং প্রোডাকশন পরিবেশে আলাদা ডেটাবেস কনফিগারেশন হবে। @Profile("dev") এবং @Profile("prod") ব্যবহারের মাধ্যমে নির্দিষ্ট প্রোফাইলের জন্য Bean তৈরি হবে।
প্রোফাইলের সুবিধা
- পরিবেশভিত্তিক কনফিগারেশন: ডেভেলপমেন্ট, টেস্ট, প্রোডাকশন ইত্যাদি পরিবেশে আলাদা কনফিগারেশন ব্যবহার করতে সুবিধা হয়।
- কনফিগারেশন সিম্প্লিফাই করা: স্প্রিং বুট প্রোফাইলের মাধ্যমে ডেটাবেস, সার্ভিস বা অন্য যেকোনো কনফিগারেশন পরিবেশ অনুযায়ী সহজেই কনফিগার করা যায়।
- অবজেক্ট ক্রিয়েশন কন্ট্রোল: শুধুমাত্র প্রয়োজনীয় Bean গুলোই কনফিগারেশন ফাইল থেকে লোড করা হয়, যা অ্যাপ্লিকেশনকে দ্রুত এবং কম্প্যাক্ট করে।
স্প্রিং বুট প্রোফাইল ব্যবহারের মাধ্যমে আপনি পরিবেশ বিশেষ কনফিগারেশন পরিচালনা করতে পারবেন, যা ডেভেলপমেন্ট, টেস্টিং এবং প্রোডাকশনের জন্য আলাদা কনফিগারেশন প্রয়োজনীয়তার ক্ষেত্রে অত্যন্ত কার্যকরী।
স্প্রিং বুট অ্যাপ্লিকেশনগুলির কনফিগারেশন সেট করা একটি গুরুত্বপূর্ণ দিক। এর মাধ্যমে আপনি বিভিন্ন সেটিংস এবং প্রোপার্টিজ নির্ধারণ করতে পারেন, যেমন ডেটাবেসের কনফিগারেশন, লগিং, সার্ভার পোর্ট, অ্যাপ্লিকেশনের পরিবেশ এবং অন্যান্য কাস্টম সেটিংস। স্প্রিং বুট সাধারণত দুটি ফরম্যাটে কনফিগারেশন ফাইল ব্যবহার করে: application.properties এবং application.yml। উভয় ফরম্যাটই একই কাজ করে, তবে YAML ফাইলটি অনেক বেশি পাঠযোগ্য এবং হায়ারারকিক্যাল ডাটা ম্যানেজমেন্টে সুবিধাজনক।
স্প্রিং বুট প্রোপার্টিজ কনফিগারেশন (application.properties)
স্প্রিং বুট অ্যাপ্লিকেশনে application.properties ফাইল ব্যবহার করে কনফিগারেশন সেট করা হয়। এখানে সাধারণ কনফিগারেশন প্রোপার্টিজ দেয়া হচ্ছে।
প্রথম উদাহরণ: ডেটাবেস কনফিগারেশন
# ডেটাবেস কনফিগারেশন
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=rootpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
এখানে spring.datasource.url, spring.datasource.username এবং spring.datasource.password প্রোপার্টিজের মাধ্যমে ডেটাবেসের সংযোগ কনফিগার করা হয়েছে।
দ্বিতীয় উদাহরণ: সার্ভার পোর্ট কনফিগারেশন
# সার্ভারের পোর্ট কনফিগারেশন
server.port=8081
এখানে server.port=8081 দ্বারা স্পেসিফাই করা হয়েছে যে অ্যাপ্লিকেশনটি 8081 পোর্টে রান করবে।
তৃতীয় উদাহরণ: অ্যাপ্লিকেশনের নাম কনফিগারেশন
# অ্যাপ্লিকেশনের নাম
spring.application.name=MySpringBootApp
এখানে spring.application.name প্রোপার্টিজ ব্যবহার করা হয়েছে অ্যাপ্লিকেশনের নাম সেট করার জন্য।
স্প্রিং বুট YAML কনফিগারেশন (application.yml)
YAML একটি সহজ এবং পঠনযোগ্য ফরম্যাট যা কনফিগারেশন ডেটা শ্রেণীবদ্ধভাবে এবং হায়ারারকিক্যালভাবে প্রদর্শন করে। স্প্রিং বুট অ্যাপ্লিকেশনেও আপনি application.yml ফাইল ব্যবহার করতে পারেন। নিচে এর উদাহরণ দেয়া হলো।
প্রথম উদাহরণ: ডেটাবেস কনফিগারেশন
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: rootpassword
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
show-sql: true
এখানে, YAML ফরম্যাটে ডেটাবেস কনফিগারেশন দেয়া হয়েছে, যেখানে spring.datasource এবং spring.jpa এর কনফিগারেশন হায়ারারকিক্যালভাবে সাজানো হয়েছে। YAML ফাইলের প্রধান সুবিধা হল, এটি অধিক পঠনযোগ্য এবং পরিবেশের প্রেক্ষিতে আরো কার্যকরী।
দ্বিতীয় উদাহরণ: সার্ভার পোর্ট কনফিগারেশন
server:
port: 8081
এখানে server.port YAML ফরম্যাটে কনফিগার করা হয়েছে। এটি স্প্রিং বুট অ্যাপ্লিকেশন চালানোর জন্য পোর্ট নির্ধারণ করে।
তৃতীয় উদাহরণ: অ্যাপ্লিকেশনের নাম কনফিগারেশন
spring:
application:
name: MySpringBootApp
এখানে অ্যাপ্লিকেশনের নাম spring.application.name প্রোপার্টির মাধ্যমে YAML ফরম্যাটে কনফিগার করা হয়েছে।
কাস্টম প্রোপার্টিজ কনফিগারেশন
স্প্রিং বুট অ্যাপ্লিকেশন থেকে কাস্টম প্রোপার্টিজও লোড করা সম্ভব। যদি আপনি আপনার অ্যাপ্লিকেশনের জন্য কাস্টম প্রোপার্টি যুক্ত করতে চান, তবে আপনাকে একটি কাস্টম প্রোপার্টি ফাইল তৈরি করতে হবে।
কাস্টম প্রোপার্টি (application.properties)
# কাস্টম প্রোপার্টি
myapp.name=My Custom Application
myapp.version=1.0.0
কাস্টম প্রোপার্টি (application.yml)
myapp:
name: My Custom Application
version: 1.0.0
এখন আপনি @Value অ্যানোটেশন ব্যবহার করে এই কাস্টম প্রোপার্টি অ্যাক্সেস করতে পারবেন।
@Component
public class AppConfig {
@Value("${myapp.name}")
private String appName;
@Value("${myapp.version}")
private String appVersion;
public void printAppDetails() {
System.out.println("App Name: " + appName);
System.out.println("App Version: " + appVersion);
}
}
প্রোপার্টি এবং YAML এর মধ্যে পার্থক্য
| ফিচার | application.properties | application.yml |
|---|---|---|
| পঠনযোগ্যতা | তুলনামূলকভাবে কম পঠনযোগ্য | অধিক পঠনযোগ্য এবং পরিষ্কার |
| হায়ারারকি | ন্যূনতম | সহজেই হায়ারারকিক্যাল ডাটা ম্যানেজমেন্ট |
| ব্যবহার | ছোট এবং সাধারণ কনফিগারেশন | বড় এবং জটিল কনফিগারেশন |
| সিনট্যাক্স | = চিহ্ন ব্যবহার | ইনডেন্টেশন ভিত্তিক |
সারাংশ
স্প্রিং বুট অ্যাপ্লিকেশন কনফিগারেশন ফাইল হিসেবে application.properties এবং application.yml দুটি ফরম্যাটই সমর্থন করে। properties ফাইল সরল এবং সোজা, তবে YAML ফাইলটি বেশি পাঠযোগ্য এবং সহজে হায়ারারকিক্যাল ডাটা ম্যানেজমেন্ট সমর্থন করে। আপনি যেভাবে সুবিধা অনুভব করেন, সেই ফরম্যাটটি ব্যবহার করে আপনার স্প্রিং বুট অ্যাপ্লিকেশন কনফিগার করতে পারেন।
Read more