Bean এর মেথড কল করা

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

291

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


SpEL দিয়ে Bean মেথড কলের সিনট্যাক্স

স্প্রিং এক্সপ্রেশন ল্যাঙ্গুয়েজের মাধ্যমে Bean এর মেথড কল করার জন্য #beanName.methodName() সিনট্যাক্স ব্যবহার করা হয়। যদি মেথডে আর্গুমেন্ট প্রয়োজন হয়, তাহলে #beanName.methodName(arg1, arg2, ...) এর মতো ব্যবহার করা হয়।


উদাহরণ: SpEL দিয়ে Bean এর মেথড কল করা

ধরা যাক, আমাদের একটি GreetingService Bean রয়েছে, যার একটি মেথড রয়েছে যেটি নাম পাঠানোর পর একটি শুভেচ্ছা বার্তা ফেরত দেয়।

Step ১: GreetingService ক্লাস তৈরি

public class GreetingService {
    public String getGreeting(String name) {
        return "Hello, " + name + "!";
    }
}

এখানে, getGreeting মেথডটি একটি নাম আর্গুমেন্ট নিয়ে একটি শুভেচ্ছা বার্তা রিটার্ন করে।


Step ২: GreetingService Bean কনফিগার করা

স্প্রিং কনটেইনারে GreetingService Bean কনফিগার করা।

@Configuration
public class AppConfig {
    @Bean
    public GreetingService greetingService() {
        return new GreetingService();
    }
}

এখানে, GreetingService একটি স্প্রিং Bean হিসেবে কনফিগার করা হয়েছে।


Step ৩: SpEL দিয়ে Bean মেথড কল করা

স্প্রিং কনফিগারেশন ফাইল বা কোডে SpEL এর মাধ্যমে GreetingService Bean এর getGreeting() মেথড কল করা।

@Component
public class EmployeeService {
    @Value("#{greetingService.getGreeting('John')}")
    private String greetingMessage;

    public String getGreetingMessage() {
        return greetingMessage;
    }
}

এখানে, SpEL এক্সপ্রেশন #{greetingService.getGreeting('John')} স্প্রিং কনটেইনারের greetingService Bean এর getGreeting মেথড কল করে 'John' আর্গুমেন্ট পাঠাচ্ছে এবং তার আউটপুটকে greetingMessage প্রোপার্টিতে সেট করছে।


Step ৪: Bean মেথড কল এবং আউটপুট দেখানো

@Component
public class MainApp {
    @Autowired
    private EmployeeService employeeService;

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = 
            new AnnotationConfigApplicationContext(AppConfig.class);
        
        MainApp app = context.getBean(MainApp.class);
        System.out.println(app.employeeService.getGreetingMessage());  // Output: Hello, John!
        
        context.close();
    }
}

এখানে, MainApp ক্লাসে EmployeeService Bean এর মাধ্যমে greetingMessage প্রোপার্টি অ্যাক্সেস করা হচ্ছে, যা SpEL এক্সপ্রেশন ব্যবহার করে GreetingService Bean এর getGreeting() মেথডের আউটপুট দেখাবে।


SpEL দিয়ে Bean এর মেথড কলের অন্যান্য উদাহরণ

১. আর্গুমেন্টসহ মেথড কল

@Value("#{greetingService.getGreeting('Alice')}")
private String greetingMessage;

এখানে, Alice নামটি মেথডে পাঠানো হচ্ছে এবং স্প্রিং কনটেইনারের greetingService Bean এর getGreeting() মেথড থেকে "Hello, Alice!" বার্তা ফেরত আসবে।

২. মেথড কল যেটি ফলাফল হিসেবে একটি লিস্ট রিটার্ন করে

public class GreetingService {
    public List<String> getGreetings(String... names) {
        return Arrays.stream(names)
                     .map(name -> "Hello, " + name + "!")
                     .collect(Collectors.toList());
    }
}
@Value("#{greetingService.getGreetings('Alice', 'Bob')}")
private List<String> greetings;

এখানে, getGreetings() মেথডে দুটি নাম Alice এবং Bob পাঠানো হচ্ছে, এবং এটি একটি লিস্ট ফেরত দিচ্ছে যার মধ্যে "Hello, Alice!" এবং "Hello, Bob!" বার্তা থাকবে।


উপসংহার

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


Content added By
Promotion

Are you sure to start over?

Loading...