@Profile Annotation ব্যবহার করে বিভিন্ন প্রোফাইল কনফিগার করা

Spring Profiles এবং DI - স্প্রিং ডিপেনডেন্সি ইনজেকশন (ডিআই) (Spring Dependency Injection) - Java Technologies

349

@Profile কী?

@Profile হলো একটি Spring অ্যানোটেশন যা Spring Beans কে নির্দিষ্ট প্রোফাইলে সক্রিয় করার জন্য ব্যবহৃত হয়। এটি আপনাকে একাধিক কনফিগারেশন সেটআপ করতে দেয়, এবং নির্দিষ্ট প্রোফাইল অনুযায়ী Beans কে সক্রিয় বা নিষ্ক্রিয় করা যায়। উদাহরণস্বরূপ, আপনি dev প্রোফাইলে ডেভেলপমেন্ট সম্পর্কিত Beans এবং prod প্রোফাইলে প্রোডাকশন সম্পর্কিত Beans কনফিগার করতে পারেন।

Spring এর @Profile অ্যানোটেশন খুবই উপকারী যখন একাধিক পরিবেশে (যেমন ডেভেলপমেন্ট, টেস্ট, প্রোডাকশন) আলাদা কনফিগারেশন ব্যবহারের প্রয়োজন হয়।


@Profile অ্যানোটেশন ব্যবহার করার পদ্ধতি

Spring-এ @Profile অ্যানোটেশন ব্যবহার করে বিভিন্ন প্রোফাইল কনফিগার করার জন্য নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করতে হয়।


1. @Profile ব্যবহার করে Beans কনফিগার করা

ধরা যাক, আমরা দুটি আলাদা প্রোফাইল তৈরি করতে চাই: dev এবং prod। আমাদের এই দুটি প্রোফাইলে আলাদা Beans কনফিগার করতে হবে।

উদাহরণ: @Profile অ্যানোটেশন ব্যবহার করে

DatabaseConfig Bean কনফিগারেশন:

package com.example.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
public class DatabaseConfig {

    @Bean
    @Profile("dev") // Bean will only be active in 'dev' profile
    public String devDatabaseConfig() {
        return "Development Database Configured";
    }

    @Bean
    @Profile("prod") // Bean will only be active in 'prod' profile
    public String prodDatabaseConfig() {
        return "Production Database Configured";
    }
}

এখানে, @Profile("dev") এবং @Profile("prod") ব্যবহার করা হয়েছে, যা ডেভেলপমেন্ট এবং প্রোডাকশন প্রোফাইল অনুযায়ী বিভিন্ন কনফিগারেশন নির্ধারণ করে।

Spring Java Configuration

package com.example.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
public class AppConfig {

    @Bean
    @Profile("dev")
    public String devService() {
        return "Development Service";
    }

    @Bean
    @Profile("prod")
    public String prodService() {
        return "Production Service";
    }
}

এখানে, devService এবং prodService কনফিগারেশনটি আলাদাভাবে dev এবং prod প্রোফাইল অনুযায়ী নির্ধারিত হয়েছে।


2. @Profile ব্যবহার করে কনফিগারেশন ফাইল

@Profile অ্যানোটেশন দিয়ে শুধুমাত্র Java Configuration এর মধ্যে নয়, Spring XML কনফিগারেশনেও ব্যবহার করা সম্ভব।

XML কনফিগারেশন উদাহরণ:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- Dev profile Bean -->
    <bean id="devService" class="com.example.model.DevService" profile="dev"/>

    <!-- Prod profile Bean -->
    <bean id="prodService" class="com.example.model.ProdService" profile="prod"/>

</beans>

এখানে profile="dev" এবং profile="prod" ব্যবহার করা হয়েছে, যা প্রতিটি Bean কে আলাদা প্রোফাইলের জন্য কনফিগার করবে।


3. প্রোফাইল সক্রিয়/নিষ্ক্রিয় করা

@Profile অ্যানোটেশন ব্যবহারের মাধ্যমে কোন Bean কে সক্রিয় বা নিষ্ক্রিয় করা হয়, কিন্তু আপনি Spring Configuration এ সিস্টেমের প্রোফাইল নির্ধারণ করতে পারেন।

application.properties ফাইল ব্যবহার করে প্রোফাইল নির্বাচন:

# Set the active profile for the application
spring.profiles.active=dev

এখানে, spring.profiles.active=dev দিয়ে dev প্রোফাইল সক্রিয় করা হয়েছে। আপনি চাইলে prod প্রোফাইলও ব্যবহার করতে পারেন।


4. Multiple Profiles in @Profile

একই Bean একাধিক প্রোফাইলে ব্যবহার করতে হলে, আপনি একটি Bean এর মধ্যে একাধিক প্রোফাইলও ব্যবহার করতে পারেন।

উদাহরণ:

@Bean
@Profile({"dev", "test"})
public String devTestService() {
    return "Service available in both dev and test profiles";
}

এখানে, devTestService Bean টি dev এবং test প্রোফাইলে সক্রিয় থাকবে।


5. Profile-aware Components

Spring Bean গুলো প্রোফাইল-অবহিত হতে পারে, অর্থাৎ নির্দিষ্ট প্রোফাইল অনুযায়ী আপনার Beans এবং মেথডের কার্যকারিতা পরিবর্তিত হতে পারে।

উদাহরণ:

@Component
@Profile("dev")
public class DevService implements Service {
    @Override
    public void execute() {
        System.out.println("Executing Dev Service");
    }
}

@Component
@Profile("prod")
public class ProdService implements Service {
    @Override
    public void execute() {
        System.out.println("Executing Prod Service");
    }
}

এখানে, DevService এবং ProdService Bean গুলো আলাদা প্রোফাইল অনুযায়ী কাজ করবে। যদি dev প্রোফাইল সক্রিয় থাকে, তাহলে DevService Bean ইনজেক্ট হবে, এবং যদি prod প্রোফাইল সক্রিয় থাকে, তাহলে ProdService Bean ইনজেক্ট হবে।


সারাংশ

Spring Framework-এ @Profile অ্যানোটেশন ব্যবহার করে আপনি প্রোফাইল-ভিত্তিক কনফিগারেশন তৈরি করতে পারেন যা আলাদা পরিবেশে (যেমন, ডেভেলপমেন্ট, প্রোডাকশন, টেস্ট) বিভিন্ন Bean বা কনফিগারেশন সেটআপ করতে সাহায্য করে। @Profile অ্যানোটেশন দ্বারা আপনি কোডের পুনঃব্যবহারযোগ্যতা বাড়াতে পারেন এবং একাধিক প্রোফাইলের জন্য কনফিগারেশন পৃথক করে রাখতে পারেন। Spring প্রোফাইল ব্যবহার করে পরিবেশের পরিবর্তনের সাথে সাথে বিভিন্ন কনফিগারেশন সহজেই পরিচালনা করা যায়।


Content added By
Promotion

Are you sure to start over?

Loading...