উদাহরণ সহ Annotations এ SpEL ব্যবহার

SpEL এবং Annotations - স্প্রিং এক্সপ্রেশন ল্যাঙ্গুয়েজ (Spring Expression Language) - Java Technologies

258

SpEL ব্যবহার করার জন্য Annotations

স্প্রিং এক্সপ্রেশন ল্যাঙ্গুয়েজ (SpEL) স্প্রিং ফ্রেমওয়ার্কে বিভিন্ন অ্যানোটেশন দ্বারা ব্যবহার করা যেতে পারে। এগুলোর মধ্যে সবচেয়ে সাধারণ এবং কার্যকরী অ্যানোটেশনগুলো হল @Value এবং @Autowired, যেগুলোর মাধ্যমে SpEL এক্সপ্রেশন ব্যবহার করা সম্ভব। এই অ্যানোটেশনগুলোর মাধ্যমে আপনি স্প্রিং কনফিগারেশন, প্রপার্টি ভ্যালু এবং অন্যান্য ডাইনামিক মান ইনজেক্ট করতে পারেন।


১. @Value অ্যানোটেশন ব্যবহার করে SpEL

স্প্রিং @Value অ্যানোটেশনটি ব্যবহার করে আপনি স্প্রিং কনটেক্সটে SpEL এক্সপ্রেশন ইনজেক্ট করতে পারেন। এটি স্প্রিং কনফিগারেশন বা অন্যান্য প্রপার্টি ফাইল থেকে মান সংগ্রহের জন্য ব্যবহৃত হয় এবং SpEL এক্সপ্রেশন প্রয়োগ করতে দেয়।

উদাহরণ ১: SpEL এর মাধ্যমে ডাইনামিক প্রপার্টি ইনজেকশন

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class GreetingService {

    @Value("#{ 10 + 20 }")
    private int sum;

    @Value("#{systemProperties['user.name']}")
    private String userName;

    public void displayInfo() {
        System.out.println("Sum: " + sum);
        System.out.println("User Name: " + userName);
    }
}

ব্যাখ্যা:

  • @Value("#{ 10 + 20 }"): SpEL ব্যবহার করে গাণিতিক যোগফল করা হচ্ছে। এখানে 10 + 20 এর মান 30 রিটার্ন হবে এবং sum ভেরিয়েবলে ইনজেক্ট হবে।
  • @Value("#{systemProperties['user.name']}"): SpEL ব্যবহার করে সিস্টেম প্রপার্টি user.name এর মান অ্যাক্সেস করা হচ্ছে, যা বর্তমান ইউজারের নাম রিটার্ন করবে এবং তা userName ভেরিয়েবলে ইনজেক্ট হবে।

আউটপুট:

Sum: 30
User Name: [User's Name]

২. @Value অ্যানোটেশন ব্যবহার করে কন্ডিশনাল SpEL

SpEL এর মাধ্যমে শর্তের ভিত্তিতে বিভিন্ন মান ইনজেক্ট করা যায়। এই ধরনের এক্সপ্রেশন সাধারণত Ternary operator (শর্তাধীন অপারেটর) ব্যবহার করে করা হয়।

উদাহরণ ২: Ternary অপারেটর ব্যবহার করে SpEL

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class UserService {

    @Value("#{ user.age >= 18 ? 'Adult' : 'Minor' }")
    private String userStatus;

    public void displayUserStatus() {
        System.out.println("User Status: " + userStatus);
    }
}

ব্যাখ্যা:

  • @Value("#{ user.age >= 18 ? 'Adult' : 'Minor' }"): এখানে, user.age >= 18 শর্তটি যাচাই করা হচ্ছে। যদি বয়স ১৮ বা তার বেশি হয়, তাহলে 'Adult' রিটার্ন হবে, অন্যথায় 'Minor' রিটার্ন হবে এবং এটি userStatus ভেরিয়েবলে ইনজেক্ট হবে।

আউটপুট:

User Status: Adult

৩. @Value অ্যানোটেশন ব্যবহার করে কনফিগারেশন প্রপার্টি ইনজেকশন

SpEL ব্যবহার করে কনফিগারেশন প্রপার্টি ফাইল থেকে ডাইনামিক মান ইনজেক্ট করা সম্ভব। স্প্রিং কনফিগারেশন ফাইলে ${} প্লেসহোল্ডার ব্যবহার করা হয় এবং SpEL #{} এক্সপ্রেশন এর মাধ্যমে মান অ্যাক্সেস করা হয়।

উদাহরণ ৩: প্রপার্টি ফাইল থেকে SpEL এর মাধ্যমে মান ইনজেক্ট

application.properties ফাইল:

app.name=Spring SpEL Example
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class ConfigService {

    @Value("#{environment['app.name']}")
    private String appName;

    public void displayConfig() {
        System.out.println("Application Name: " + appName);
    }
}

ব্যাখ্যা:

  • @Value("#{environment['app.name']}"): স্প্রিং কনফিগারেশন ফাইল থেকে app.name প্রপার্টি মান অ্যাক্সেস করা হচ্ছে এবং appName ভেরিয়েবলে ইনজেক্ট করা হচ্ছে।

আউটপুট:

Application Name: Spring SpEL Example

৪. @Value অ্যানোটেশন ব্যবহার করে কন্ডিশনাল কনফিগারেশন

কোনো নির্দিষ্ট কন্ডিশনের উপর ভিত্তি করে কনফিগারেশন ফাইলের মান ইনজেক্ট করার জন্য SpEL এর Ternary operator ব্যবহার করা যেতে পারে।

উদাহরণ ৪: কন্ডিশনাল কনফিগারেশন

application.properties ফাইল:

app.environment=development
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class AppConfig {

    @Value("#{systemProperties['app.environment'] == 'development' ? 'Development Mode' : 'Production Mode'}")
    private String appMode;

    public void displayAppMode() {
        System.out.println("App Mode: " + appMode);
    }
}

ব্যাখ্যা:

  • @Value("#{systemProperties['app.environment'] == 'development' ? 'Development Mode' : 'Production Mode'}"): SpEL ব্যবহার করে app.environment প্রপার্টির মান চেক করা হচ্ছে। যদি তা 'development' হয়, তাহলে 'Development Mode' রিটার্ন হবে, অন্যথায় 'Production Mode' রিটার্ন হবে।

আউটপুট:

App Mode: Development Mode

৫. SpEL ব্যবহার করে Static Method Call

SpEL এর মাধ্যমে আপনি স্প্রিং কনফিগারেশন ফাইল বা কোডে স্ট্যাটিক মেথড কলও করতে পারেন।

উদাহরণ ৫: স্ট্যাটিক মেথড কল

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class MathService {

    @Value("#{T(java.lang.Math).PI}")
    private double piValue;

    public void displayPiValue() {
        System.out.println("Value of Pi: " + piValue);
    }
}

ব্যাখ্যা:

  • @Value("#{T(java.lang.Math).PI}"): SpEL এর মাধ্যমে Math.PI এর মান অ্যাক্সেস করা হচ্ছে, যা গাণিতিক পাই-এর মান রিটার্ন করবে (3.14159...).

আউটপুট:

Value of Pi: 3.141592653589793

সারাংশ

SpEL (Spring Expression Language) স্প্রিং অ্যানোটেশনগুলির মাধ্যমে অত্যন্ত শক্তিশালী এবং নমনীয় কনফিগারেশন এবং প্রপার্টি ইনজেকশন সুবিধা প্রদান করে। @Value অ্যানোটেশন ব্যবহার করে SpEL এক্সপ্রেশন ইনজেক্ট করা সম্ভব, যা ডাইনামিক কনফিগারেশন, গাণিতিক হিসাব, শর্তানুযায়ী মান নির্ধারণ এবং স্ট্যাটিক মেথড কল করতে সহায়ক। এটি স্প্রিং অ্যাপ্লিকেশনগুলিকে আরও নমনীয় এবং শক্তিশালী করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...