Custom Functions SpEL এর মাধ্যমে

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

289

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

Spring Framework আপনাকে Custom Functions তৈরি করার সুযোগ দেয়, যা SpEL এক্সপ্রেশনগুলোতে ডাইনামিকভাবে কাজ করতে পারে। আপনি নিজের কাস্টম ক্লাসের মেথডকে SpEL এক্সপ্রেশন হিসেবে ব্যবহার করতে পারেন।


SpEL এর মাধ্যমে Custom Functions ব্যবহার করার প্রক্রিয়া

SpEL-এ Custom Functions ব্যবহারের জন্য সাধারণত তিনটি ধাপ অনুসরণ করতে হয়:

  1. Custom Function Class তৈরি করা: একটি ক্লাস তৈরি করুন যেখানে আপনার কাস্টম ফাংশন থাকবে।
  2. Function Registration: Spring Context-এ ফাংশন রেজিস্টার করুন।
  3. SpEL এক্সপ্রেশন-এ Custom Function ব্যবহার করা: SpEL এক্সপ্রেশন ব্যবহার করে ফাংশন কল করুন।

১. Custom Function Class তৈরি করা

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

public class MathFunctions {

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

    public int subtract(int a, int b) {
        return a - b;
    }
}

এখানে MathFunctions ক্লাসে দুটি মেথড আছে - add() এবং subtract()


২. Function Registration

স্প্রিং কনটেইনারে কাস্টম ফাংশন রেজিস্টার করার জন্য CustomFunction ক্লাসটি SpEL কনটেক্সটে রেজিস্টার করতে হবে। এটি করতে @Bean অ্যানোটেশন বা XML কনফিগারেশন ব্যবহার করা যেতে পারে।

XML কনফিগারেশন:

<bean id="mathFunctions" class="com.example.MathFunctions"/>
<bean id="spelFunctionRegistry" class="org.springframework.expression.spel.support.StandardEvaluationContext">
    <property name="variables">
        <map>
            <entry key="math" value-ref="mathFunctions"/>
        </map>
    </property>
</bean>

এখানে mathFunctions Bean হিসেবে MathFunctions ক্লাস রেজিস্টার করা হয়েছে।

Java Configuration:

@Configuration
public class AppConfig {

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

    @Bean
    public StandardEvaluationContext evaluationContext() {
        StandardEvaluationContext context = new StandardEvaluationContext();
        context.setVariable("math", new MathFunctions());
        return context;
    }
}

এখানে, MathFunctions Bean Spring Context-এ রেজিস্টার করা হয়েছে।


৩. SpEL এক্সপ্রেশন-এ Custom Function ব্যবহার করা

এখন আমরা SpEL এক্সপ্রেশন দিয়ে কাস্টম ফাংশন কল করতে পারি। নিচে এক্সপ্রেশন হিসেবে add() এবং subtract() মেথড ব্যবহার করা হচ্ছে।

SpEL এক্সপ্রেশন দিয়ে কাস্টম ফাংশন কল:

public class SpELExample {

    @Autowired
    private StandardEvaluationContext evaluationContext;

    public void execute() {
        ExpressionParser parser = new SpelExpressionParser();
        
        // add ফাংশন কল
        Expression exp1 = parser.parseExpression("#math.add(5, 3)");
        int result1 = (Integer) exp1.getValue(evaluationContext);
        System.out.println("Add Result: " + result1); // Output: 8

        // subtract ফাংশন কল
        Expression exp2 = parser.parseExpression("#math.subtract(5, 3)");
        int result2 = (Integer) exp2.getValue(evaluationContext);
        System.out.println("Subtract Result: " + result2); // Output: 2
    }
}

এখানে, SpEL এক্সপ্রেশন #math.add(5, 3) এবং #math.subtract(5, 3) এর মাধ্যমে কাস্টম add() এবং subtract() মেথড কল করা হয়েছে।


SpEL-এ Custom Functions ব্যবহার করার সুবিধা

  1. ফাংশনালিটি বৃদ্ধি: SpEL-এর ডিফল্ট ফাংশনালিটিকে ছাড়িয়ে কাস্টম লজিক বা কাস্টম ফাংশন তৈরি করতে পারবেন।
  2. ডাইনামিক এক্সপ্রেশন ইভ্যালুয়েশন: প্রোগ্রামেটিক্যালি ডাইনামিক এক্সপ্রেশন কনফিগারেশন করতে SpEL এক্সপ্রেশন ব্যবহার করা যায়।
  3. Spring Context Integration: কাস্টম ফাংশন Spring Context-এর মধ্যে সহজে এক্সপ্রেস করা যায় এবং SpEL এক্সপ্রেশন সহ ব্যবহার করা যায়।
  4. Reusable Functions: একবার তৈরি করা ফাংশনকে বিভিন্ন SpEL এক্সপ্রেশন বা বিভিন্ন Bean-এ পুনরায় ব্যবহার করা যেতে পারে।

SpEL-এ Custom Functions এর অন্যান্য উদাহরণ

১. কাস্টম ফাংশন দিয়ে স্ট্রিং ট্রান্সফরমেশন:

public class StringFunctions {
    
    public String toUpperCase(String input) {
        return input.toUpperCase();
    }

    public String toLowerCase(String input) {
        return input.toLowerCase();
    }
}

২. SpEL-এ Custom String Function ব্যবহার করা:

<bean id="stringFunctions" class="com.example.StringFunctions"/>
<bean id="spelFunctionRegistry" class="org.springframework.expression.spel.support.StandardEvaluationContext">
    <property name="variables">
        <map>
            <entry key="stringFunctions" value-ref="stringFunctions"/>
        </map>
    </property>
</bean>

৩. SpEL-এ String Function Call:

ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("#stringFunctions.toUpperCase('hello world')");
String result = (String) exp.getValue(evaluationContext);
System.out.println(result); // Output: "HELLO WORLD"

সারাংশ

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


Content added By

স্প্রিং এক্সপ্রেশন ল্যাঙ্গুয়েজ (SpEL) একটি শক্তিশালী টুল যা স্প্রিং অ্যাপ্লিকেশনের মধ্যে এক্সপ্রেশন ইভ্যালুয়েশন এবং কনফিগারেশন ফাইলগুলোর মাধ্যমে ডাইনামিকভাবে ডেটা প্রক্রিয়াকরণ এবং কাস্টম লজিক বাস্তবায়ন করতে সাহায্য করে। স্প্রিং ক্লাস বা Custom Functions ব্যবহার করে স্প্রিং এক্সপ্রেশন ল্যাঙ্গুয়েজে কাস্টম ফাংশন তৈরি করা সম্ভব। এগুলি সাধারণত নির্দিষ্ট কার্যক্ষমতা যেমন মেথড বা কাস্টম লজিক হিসেবে ব্যবহার করা হয়।


কাস্টম ফাংশন তৈরি করার জন্য প্রয়োজনীয় পদক্ষেপ

  1. Custom Function Class তৈরি করা।
  2. Custom Function কে স্প্রিং কনটেইনারে রেজিস্টার করা।
  3. SpEL এ Custom Function ব্যবহার করা।

১. Custom Function Class তৈরি করা

প্রথমে, আপনাকে একটি কাস্টম ফাংশন ক্লাস তৈরি করতে হবে যেটি সেই ফাংশনের কার্যক্রম সঞ্চালন করবে। এই ক্লাসে একটি পাবলিক মেথড থাকবে যা এক্সপ্রেশন ইভ্যালুয়েশন করার সময় কল করা হবে।

উদাহরণ: কাস্টম ফাংশন ক্লাস তৈরি করা

public class MyCustomFunctions {

    public String greet(String name) {
        return "Hello, " + name + "!";
    }

    public int addNumbers(int num1, int num2) {
        return num1 + num2;
    }
}

এখানে, greet() ফাংশন একটি নাম ইনপুট নিয়ে একটি শুভেচ্ছা বার্তা তৈরি করছে এবং addNumbers() দুটি সংখ্যার যোগফল রিটার্ন করছে।


২. Custom Function কে স্প্রিং কনটেইনারে রেজিস্টার করা

স্প্রিং কনটেইনারে কাস্টম ফাংশন রেজিস্টার করার জন্য MethodInvokingFactoryBean ব্যবহার করা হয়। এর মাধ্যমে আমরা ফাংশনগুলোকে SpEL এক্সপ্রেশন মাধ্যমে কল করতে পারি।

উদাহরণ: Custom Function রেজিস্টার করা

@Configuration
public class AppConfig {

    @Bean
    public MyCustomFunctions myCustomFunctions() {
        return new MyCustomFunctions();
    }

    @Bean
    public MethodInvokingFactoryBean methodInvokingFactoryBean() {
        MethodInvokingFactoryBean factoryBean = new MethodInvokingFactoryBean();
        factoryBean.setTargetObject(myCustomFunctions());
        factoryBean.setTargetMethod("greet");
        return factoryBean;
    }
}

এখানে, myCustomFunctions() Bean তৈরি করা হয়েছে এবং এটি MethodInvokingFactoryBean এর মাধ্যমে greet() মেথডে রেফারেন্স করছে। এখন, স্প্রিং কনটেইনারে greet মেথডটি ব্যবহারযোগ্য।


৩. SpEL এ Custom Function ব্যবহার করা

স্প্রিং কনটেইনারে রেজিস্টার করা কাস্টম ফাংশনটি SpEL এক্সপ্রেশন ব্যবহার করে কল করা যেতে পারে।

উদাহরণ: SpEL এ Custom Function ব্যবহার করা

@Component
public class GreetingService {

    @Value("#{myCustomFunctions.greet('John')}")
    private String greetingMessage;

    @Value("#{myCustomFunctions.addNumbers(5, 3)}")
    private int sum;

    public String getGreetingMessage() {
        return greetingMessage;
    }

    public int getSum() {
        return sum;
    }
}

এখানে, greet('John') SpEL এক্সপ্রেশনটি স্প্রিং কনটেইনারে রেজিস্টার করা greet মেথডকে কল করবে এবং "Hello, John!" বার্তা রিটার্ন করবে। একইভাবে, addNumbers(5, 3) ফাংশন কল করবে এবং 8 রিটার্ন করবে।


৪. কাস্টম ফাংশন ব্যবহার করার সময় আর্গুমেন্ট পাস করা

SpEL কাস্টম ফাংশনগুলোতে multiple arguments পাস করা যায়। আপনি সহজেই SpEL এক্সপ্রেশন এর মাধ্যমে কাস্টম ফাংশন কল করতে পারেন।

উদাহরণ: আর্গুমেন্ট পাস করা

@Value("#{myCustomFunctions.addNumbers(10, 15)}")
private int sumOfNumbers;

এখানে, addNumbers(10, 15) ফাংশন কল করছে এবং আউটপুট হিসেবে 25 রিটার্ন করবে।


৫. SpEL কাস্টম ফাংশন ব্যবহার করার জন্য ফাংশন নাম পরিবর্তন করা

যদি আপনি MethodInvokingFactoryBean এর মাধ্যমে একটি কাস্টম ফাংশন তৈরি করেন, তবে আপনি চাইলে targetMethod এর নাম পরিবর্তন করে অন্য কোন মেথডও কল করতে পারেন।

উদাহরণ: targetMethod পরিবর্তন করা

@Bean
public MethodInvokingFactoryBean methodInvokingFactoryBean() {
    MethodInvokingFactoryBean factoryBean = new MethodInvokingFactoryBean();
    factoryBean.setTargetObject(myCustomFunctions());
    factoryBean.setTargetMethod("addNumbers");  // targetMethod name changed
    return factoryBean;
}

এখানে, addNumbers মেথডকে স্প্রিং কনটেইনারের মাধ্যমে SpEL এক্সপ্রেশন থেকে কল করা যাবে।


উপসংহার

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


Content added By

Spring Expression Language (SpEL) এর মাধ্যমে আপনি Spring Beans-এর static methods কে অ্যাক্সেস এবং কল করতে পারেন। SpEL এর মাধ্যমে static methods কল করার জন্য T(className) সিনট্যাক্স ব্যবহার করা হয়। এই সিনট্যাক্স ব্যবহার করে আপনি একটি ক্লাসের static methods অ্যাক্সেস করতে পারবেন, যেখানে T চিহ্ন ক্লাস রেফারেন্সের জন্য ব্যবহৃত হয়।


Static Method কল করা SpEL এর মাধ্যমে

1. Static Method Calling Syntax

SpEL-এ static method কল করতে আপনাকে T(className) ব্যবহার করতে হবে এবং তারপর method নাম এবং আর্গুমেন্টগুলি দিতে হবে।

Syntax:

T(com.example.ClassName).methodName(arguments)

এখানে T(com.example.ClassName) হলো static ক্লাস রেফারেন্স, এবং তারপর .methodName(arguments) দ্বারা static method কল করা হয়।


উদাহরণ:

ধরা যাক, আমাদের একটি MathUtils ক্লাস আছে যেখানে একটি static multiply method রয়েছে যা দুটি সংখ্যা গুণ করে।

1. MathUtils ক্লাস

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

2. Spring XML কনফিগারেশন

Spring কনফিগারেশনে আমরা এই ক্লাসের static method কল করার জন্য SpEL ব্যবহার করব।

<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">

    <bean id="mathUtils" class="com.example.MathUtils"/>
</beans>

3. Static Method SpEL থেকে কল করা

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

public class SpELStaticMethodExample {
    public static void main(String[] args) {
        // Spring context load from XML configuration
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

        // SpEL expression parser
        ExpressionParser parser = new SpelExpressionParser();
        StandardEvaluationContext evaluationContext = new StandardEvaluationContext();
        
        // No need to register static class as a bean, directly use T() to call static method
        // Calling static method 'multiply' from MathUtils class
        int result = parser.parseExpression("T(com.example.MathUtils).multiply(10, 5)").getValue(evaluationContext, Integer.class);
        System.out.println("Multiplication result: " + result);  // Output: Multiplication result: 50
    }
}

SpEL ব্যাখ্যা:

  • T(com.example.MathUtils): এই অংশে আমরা MathUtils ক্লাসটিকে SpEL এর মধ্যে রেফারেন্স করেছি।
  • .multiply(10, 5): এর মাধ্যমে multiply static method কল করা হয়েছে এবং দুইটি আর্গুমেন্ট (10, 5) প্রদান করা হয়েছে।

Static Methods with Other Data Types

SpEL এর মাধ্যমে static methods কল করার সময় আপনি বিভিন্ন ডেটা টাইপের আর্গুমেন্ট পাঠাতে পারেন এবং সেই অনুযায়ী রিটার্ন ভ্যালু ব্যবহার করতে পারেন।

উদাহরণ:

ধরা যাক আমাদের StringUtils ক্লাসে একটি static method আছে reverseString যা একটি স্ট্রিং রিভার্স করে।

public class StringUtils {
    public static String reverseString(String input) {
        StringBuilder sb = new StringBuilder(input);
        return sb.reverse().toString();
    }
}

SpEL কোড:

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

public class SpELStaticMethodStringExample {
    public static void main(String[] args) {
        // Spring context load from XML configuration
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

        // SpEL expression parser
        ExpressionParser parser = new SpelExpressionParser();
        StandardEvaluationContext evaluationContext = new StandardEvaluationContext();

        // Calling static method 'reverseString' from StringUtils class
        String reversedString = parser.parseExpression("T(com.example.StringUtils).reverseString('Spring')").getValue(evaluationContext, String.class);
        System.out.println("Reversed String: " + reversedString);  // Output: gnirpS
    }
}

সারাংশ

SpEL (Spring Expression Language) এর মাধ্যমে Spring Beans-এর static methods কল করা খুবই সহজ। T(className) সিনট্যাক্স ব্যবহার করে আপনি static methods এর সাথে কাজ করতে পারেন। এটি আপনাকে Spring Beans-এর সাথে SpEL ব্যবহার করে ডাইনামিক ফাংশনালিটি যোগ করার ক্ষমতা প্রদান করে, এবং স্ট্যাটিক ক্লাস মেথডে অ্যাক্সেস করে আপনার অ্যাপ্লিকেশনকে আরও নমনীয় এবং শক্তিশালী করে তোলে।

Content added By

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...