উদাহরণ সহ বেসিক SpEL ব্যবহার

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

288

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


SpEL এর সুবিধাসমূহ

  • ডাইনামিক এক্সপ্রেশন: Spring Bean কনফিগারেশন এবং অ্যানোটেশন কনফিগারেশন ডাইনামিকভাবে নির্ধারণ করতে SpEL ব্যবহার করা যেতে পারে।
  • অবজেক্ট এক্সপ্রেশন: Bean এর প্রপার্টি, মেথড, এবং ফিল্ডে এক্সপ্রেশন ইভ্যালুয়েট করা।
  • অ্যারে/কলেকশন: অ্যারে, লিস্ট, সেট এবং ম্যাপের উপর এক্সপ্রেশন চালানো।
  • মেথড কলিং: SpEL এর মাধ্যমে মেথড কলিং করা।

SpEL এর বেসিক ব্যবহার

১. SpEL এক্সপ্রেশন সিঙ্ক্রোনাইজেশন

Spring-এর @Value অ্যানোটেশন SpEL এক্সপ্রেশন ব্যবহার করতে সাহায্য করে। এখানে একটি বেসিক উদাহরণ দেওয়া হল:

@Component
public class MyBean {
    @Value("#{2 + 3}")
    private int sum;

    public int getSum() {
        return sum;
    }
}

এখানে @Value("#{2 + 3}") স্পেল এক্সপ্রেশন ব্যবহার করে দুইটি সংখ্যার যোগফল নির্ধারণ করা হয়েছে। sum প্রপার্টি এখন ৫ হবে।

২. Bean প্রপার্টি এক্সপ্রেশন

Spring Bean-এর প্রপার্টি এক্সপ্রেশন ব্যবহার করে ডাইনামিকভাবে মান অ্যাসাইন করা যেতে পারে।

@Component
public class Person {
    private String name;
    private int age;

    // Getters and Setters

    @Override
    public String toString() {
        return "Name: " + name + ", Age: " + age;
    }
}

@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {

    @Bean
    public Person person() {
        return new Person();
    }
    
    @PostConstruct
    public void init() {
        ExpressionParser parser = new SpelExpressionParser();
        StandardEvaluationContext context = new StandardEvaluationContext();

        // Setting the values dynamically
        context.setVariable("person", person());
        parser.parseExpression("name = 'John'").getValue(context);
        parser.parseExpression("age = 30").getValue(context);
        
        System.out.println(person().toString());
    }
}

এখানে SpEL এক্সপ্রেশন name = 'John' এবং age = 30 দিয়ে Person Bean-এর প্রপার্টি ডাইনামিকভাবে সেট করা হয়েছে।

৩. SpEL ব্যবহার করে মেথড কল

SpEL ব্যবহার করে Spring Bean-এর মেথড কলও করা যায়। নিচে একটি উদাহরণ দেওয়া হয়েছে:

@Component
public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

@Configuration
@ComponentScan(basePackages = "com.example")
public class AppConfig {

    @Bean
    public Calculator calculator() {
        return new Calculator();
    }

    @PostConstruct
    public void init() {
        ExpressionParser parser = new SpelExpressionParser();
        StandardEvaluationContext context = new StandardEvaluationContext();
        
        // Calling the add method dynamically via SpEL
        context.setVariable("calculator", calculator());
        int result = (int) parser.parseExpression("#calculator.add(5, 3)").getValue(context);
        
        System.out.println("Addition result: " + result);
    }
}

এখানে calculator.add(5, 3) এক্সপ্রেশন কল করে SpEL এর মাধ্যমে Calculator Bean-এর add মেথড কল করা হয়েছে এবং ফলাফল প্রিন্ট করা হয়েছে।


SpEL এর বেসিক সিনট্যাক্স

  • অপেন এক্সপ্রেশন: #{} চিহ্নের মধ্যে SpEL এক্সপ্রেশন লেখা হয়।
  • অ্যারিথমেটিক এক্সপ্রেশন: যোগফল, বিয়োগ, গুণফল, ভাগফল ইত্যাদি।

    #{5 + 3}     // ৮
    #{10 - 4}    // ৬
    #{2 * 6}     // ১২
    #{10 / 2}    // ৫
    
  • স্ট্রিং এক্সপ্রেশন: SpEL স্ট্রিং কনক্যাটেনেশনও সাপোর্ট করে।

    #{'Hello ' + 'World'}   // "Hello World"
    
  • বুলিয়ান এক্সপ্রেশন: তুলনা অপারেটর যেমন ==, !=, >, <, >=, <= ইত্যাদি।

    #{2 > 3}     // false
    #{5 == 5}    // true
    
  • অবজেক্ট প্রপার্টি এক্সপ্রেশন: Spring Bean এর প্রপার্টি থেকে মান রিট্রিভ করা।

    #{person.name}   // person Bean এর name প্রপার্টি রিট্রিভ করা
    

SpEL এর আরও কিছু ব্যবহার

১. কন্ডিশনাল এক্সপ্রেশন

SpEL-এ কন্ডিশনাল এক্সপ্রেশন ব্যবহার করে শর্তসাপেক্ষ এক্সপ্রেশন তৈরি করা যায়।

@Value("#{T(java.lang.Math).PI}")
private double pi; // PI constant from Math class

@Value("#{2 > 3 ? 'True' : 'False'}")
private String result; // Conditional expression

২. লিস্ট, সেট বা ম্যাপ ব্যবহার

SpEL ব্যবহার করে এক্সপ্রেশন থেকে লিস্ট, সেট বা ম্যাপেও এক্সেস করা যেতে পারে।

@Value("#{myList[0]}")
private String firstItem; // List এর প্রথম আইটেম

সারাংশ

Spring Expression Language (SpEL) একটি শক্তিশালী ভাষা যা Spring Beans এর মধ্যে ডাইনামিক এক্সপ্রেশন ব্যবহার করতে সহায়ক। এটি বিভিন্ন প্রকারের এক্সপ্রেশন যেমন গণনা, মেথড কলিং, এবং অবজেক্ট প্রপার্টি এক্সপ্রেশন ব্যবহারের মাধ্যমে Spring কনফিগারেশনকে আরও ডাইনামিক এবং ফ্লেক্সিবল করে তোলে। SpEL-এ Arithmetic, String Concatenation, Conditional Expressions, Object Access, এবং Method Calls এর মতো বেশ কিছু কার্যকর পদ্ধতি উপলব্ধ রয়েছে, যা Spring ভিত্তিক অ্যাপ্লিকেশনগুলির কার্যক্ষমতা এবং কনফিগারেশনকে সহজতর করে।

Content added By
Promotion

Are you sure to start over?

Loading...