উদাহরণ সহ Custom Functions

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

278

Spring Expression Language (SpEL) একটি শক্তিশালী এক্সপ্রেশন ভাষা যা Java Beans, ডাইনামিক কনফিগারেশন, মেথড কল এবং আরও অনেক কিছু পরিচালনা করতে সক্ষম। কখনো কখনো, আপনার কিছু কাস্টম ফাংশন তৈরি করার প্রয়োজন হয়, যেগুলো SpEL এক্সপ্রেশনগুলোতে ব্যবহার করা যায়। SpEL-এ Custom Functions তৈরি করে আপনি আরও গতিশীল এবং শক্তিশালী এক্সপ্রেশন তৈরি করতে পারেন।

Spring Framework-এ Custom Functions তৈরি করার জন্য আপনাকে একটি ফাংশন ক্লাস তৈরি করতে হবে এবং সেটিকে Spring-এর SpEL কনটেক্সটে রেজিস্টার করতে হবে।


Custom Function তৈরি করার পদ্ধতি

১. কাস্টম ফাংশন ক্লাস তৈরি করা

প্রথমে একটি কাস্টম ক্লাস তৈরি করতে হবে, যেটি স্পেল এক্সপ্রেশন ব্যবহার করবে। এখানে একটি উদাহরণ দেওয়া হয়েছে, যেখানে একটি কাস্টম ফাংশন তৈরি করা হয়েছে যা দুটি সংখ্যার যোগফল বের করবে।

public class MathFunctions {
    public int add(int a, int b) {
        return a + b;
    }

    public int multiply(int a, int b) {
        return a * b;
    }

    public String reverse(String input) {
        return new StringBuilder(input).reverse().toString();
    }
}

এই ক্লাসে তিনটি ফাংশন রয়েছে:

  • add(int a, int b) — দুটি সংখ্যা যোগফল বের করে।
  • multiply(int a, int b) — দুটি সংখ্যা গুণফল বের করে।
  • reverse(String input) — একটি স্ট্রিং উল্টো করে।

২. SpEL কনটেক্সটে কাস্টম ফাংশন রেজিস্টার করা

Spring-এ SpEL কনটেক্সটে কাস্টম ফাংশন রেজিস্টার করতে StandardEvaluationContext ব্যবহার করা হয়। নিচে একটি উদাহরণ দেখানো হলো, যেখানে এই কাস্টম ফাংশনগুলো SpEL এক্সপ্রেশন হিসেবে ব্যবহার করা হচ্ছে।

import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.expression.spel.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;

public class SpelCustomFunctionExample {
    public static void main(String[] args) {
        // SpEL কনটেক্সট তৈরি করা
        StandardEvaluationContext context = new StandardEvaluationContext();
        
        // কাস্টম MathFunctions ক্লাস রেজিস্টার করা
        context.setVariable("mathFunctions", new MathFunctions());

        // SpEL এক্সপ্রেশন পার্সার তৈরি
        ExpressionParser parser = new SpelExpressionParser();

        // কাস্টম ফাংশন add() ব্যবহার করা
        String addExpression = "#{mathFunctions.add(10, 20)}";
        int sum = (Integer) parser.parseExpression(addExpression).getValue(context);
        System.out.println("Sum: " + sum); // আউটপুট: Sum: 30

        // কাস্টম ফাংশন multiply() ব্যবহার করা
        String multiplyExpression = "#{mathFunctions.multiply(4, 5)}";
        int product = (Integer) parser.parseExpression(multiplyExpression).getValue(context);
        System.out.println("Product: " + product); // আউটপুট: Product: 20

        // কাস্টম ফাংশন reverse() ব্যবহার করা
        String reverseExpression = "#{mathFunctions.reverse('SpringFramework')}";
        String reversed = (String) parser.parseExpression(reverseExpression).getValue(context);
        System.out.println("Reversed String: " + reversed); // আউটপুট: Reversed String: kramwenkS
    }
}

এখানে, StandardEvaluationContext ব্যবহার করে আমরা MathFunctions ক্লাসটিকে SpEL কনটেক্সটে রেজিস্টার করেছি। তারপর, SpEL এক্সপ্রেশন ব্যবহার করে আমরা add(), multiply(), এবং reverse() ফাংশনগুলোকে কল করেছি।


৩. কাস্টম ফাংশন ক্লাস রেজিস্টার করা Spring Bean হিসাবে

Spring Framework-এ আপনি আপনার কাস্টম ফাংশন ক্লাসকে একটি Spring Bean হিসেবেও রেজিস্টার করতে পারেন। নিচে একটি Spring Configuration ক্লাসের উদাহরণ দেওয়া হয়েছে:

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

@Configuration
public class AppConfig {

    @Bean
    public MathFunctions mathFunctions() {
        return new MathFunctions();
    }
}

এখানে, MathFunctions ক্লাসকে Spring Bean হিসাবে রেজিস্টার করা হয়েছে। এবার, StandardEvaluationContext ব্যবহার করার পরিবর্তে আপনি Spring-এর ApplicationContext ব্যবহার করতে পারেন।


৪. Spring Bean কনটেক্সট থেকে কাস্টম ফাংশন ব্যবহার করা

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.ApplicationContext;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.expression.spel.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;

public class SpelWithSpringBeanExample {
    public static void main(String[] args) {
        // Spring ApplicationContext তৈরি করা
        ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

        // SpEL কনটেক্সট তৈরি করা
        StandardEvaluationContext evaluationContext = new StandardEvaluationContext();

        // Spring Bean থেকে MathFunctions রিট্রিভ করা
        MathFunctions mathFunctions = context.getBean(MathFunctions.class);

        // SpEL কনটেক্সটে MathFunctions রেজিস্টার করা
        evaluationContext.setVariable("mathFunctions", mathFunctions);

        // SpEL পার্সার তৈরি করা
        ExpressionParser parser = new SpelExpressionParser();

        // কাস্টম ফাংশন add() ব্যবহার করা
        String addExpression = "#{mathFunctions.add(10, 20)}";
        int sum = (Integer) parser.parseExpression(addExpression).getValue(evaluationContext);
        System.out.println("Sum: " + sum);

        // কাস্টম ফাংশন multiply() ব্যবহার করা
        String multiplyExpression = "#{mathFunctions.multiply(4, 5)}";
        int product = (Integer) parser.parseExpression(multiplyExpression).getValue(evaluationContext);
        System.out.println("Product: " + product);

        // কাস্টম ফাংশন reverse() ব্যবহার করা
        String reverseExpression = "#{mathFunctions.reverse('SpringFramework')}";
        String reversed = (String) parser.parseExpression(reverseExpression).getValue(evaluationContext);
        System.out.println("Reversed String: " + reversed);
    }
}

এখানে, আমরা MathFunctions Bean কে Spring Context থেকে রিট্রিভ করে SpEL কনটেক্সটে সেট করেছি এবং তারপর সেই Bean-এর কাস্টম ফাংশনগুলো SpEL এক্সপ্রেশন ব্যবহার করে কল করেছি।


সারাংশ

Spring Expression Language (SpEL)-এ Custom Functions ব্যবহার করা একটি শক্তিশালী পদ্ধতি, যার মাধ্যমে আপনি নিজের প্রয়োজনীয় ফাংশনগুলি SpEL এক্সপ্রেশনে ব্যবহার করতে পারেন। এটি Java কোডের মধ্যে ডাইনামিক এবং কাস্টম কার্যকারিতা যুক্ত করতে সহায়ক। SpEL-এর মাধ্যমে কাস্টম ফাংশন তৈরি এবং Spring Bean কনটেক্সটে রেজিস্টার করা সহজ, যা Spring-এর আরও ডাইনামিক কনফিগারেশন এবং কার্যক্ষমতা উন্নত করে।

Content added By
Promotion

Are you sure to start over?

Loading...