Struts 2 এবং Spring দুটি জনপ্রিয় জাভা ফ্রেমওয়ার্ক যা ওয়েব অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। Struts 2 একটি MVC ফ্রেমওয়ার্ক, যেখানে Spring একটি শক্তিশালী dependency injection (DI) এবং AOP (Aspect-Oriented Programming) ফ্রেমওয়ার্ক। যখন এই দুটি ফ্রেমওয়ার্ক একত্রিত করা হয়, তখন এটি একটি শক্তিশালী এবং মডুলার অ্যাপ্লিকেশন আর্কিটেকচার তৈরি করতে সহায়তা করে।
Struts 2 এবং Spring Integration এর সুবিধা
- Dependency Injection (DI): Spring DI ব্যবহারের মাধ্যমে অ্যাকশন ক্লাসগুলিতে অবজেক্ট ইনজেকশন করা সম্ভব হয়, যার ফলে কোডের রক্ষণাবেক্ষণ সহজ হয় এবং টেস্টিংও করা যায়।
- Transaction Management: Spring-এর ট্রানজেকশন ম্যানেজমেন্ট ব্যবহার করে আপনি Struts 2 অ্যাপ্লিকেশনকে খুব সহজে ট্রানজেকশন হ্যান্ডলিং করতে পারবেন।
- Aspect-Oriented Programming (AOP): Spring AOP দিয়ে আপনি ক্রস-কাটিং কনসার্ন (যেমন লগিং, নিরাপত্তা) সহজে অ্যাপ্লিকেশনটির মধ্যে প্রয়োগ করতে পারবেন।
Struts 2 এবং Spring একত্রিত করার জন্য, আপনাকে Spring-এর context:component-scan, bean:autowire, এবং Spring Bean-এর মাধ্যমে ফ্রেমওয়ার্কগুলোকে সংযুক্ত করতে হবে।
Struts 2 এবং Spring Integration এর উদাহরণ
এখানে আমরা একটি সাধারণ উদাহরণ দেখব, যেখানে Struts 2 অ্যাপ্লিকেশন Spring এর DI এবং AOP সুবিধা ব্যবহার করবে।
১. pom.xml ফাইল (Maven Dependency Configuration)
প্রথমে, আপনার pom.xml ফাইলে Struts 2 এবং Spring-এর প্রয়োজনীয় ডিপেনডেন্সি যুক্ত করুন।
<dependencies>
<!-- Struts 2 dependency -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.22</version>
</dependency>
<!-- Spring Core Dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.8</version>
</dependency>
<!-- Spring Context Dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.8</version>
</dependency>
<!-- Spring AOP Dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.3.8</version>
</dependency>
<!-- Spring Web Dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.8</version>
</dependency>
</dependencies>
২. Spring Configuration File (spring-config.xml)
এখন Spring কনফিগারেশন ফাইল তৈরি করুন যা Spring Beans এবং component-scanning পরিচালনা করবে।
<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-3.0.xsd">
<!-- Enable Spring's component scanning -->
<context:component-scan base-package="com.example"/>
<!-- Define Spring Beans for Struts 2 Action classes -->
<bean id="greetingAction" class="com.example.GreetingAction" />
</beans>
component-scanট্যাগ Spring কে বলে দেয় যে এটিcom.exampleপ্যাকেজের মধ্যে থাকা সমস্ত কম্পোনেন্ট (যেমন: Action ক্লাস) স্ক্যান করবে এবং সেই অনুযায়ী Bean তৈরি করবে।- Action ক্লাসগুলোকে Spring Bean হিসেবে কনফিগার করা হচ্ছে যাতে Spring DI ব্যবহারের মাধ্যমে তারা ডিপেনডেন্সি ইনজেক্ট করতে পারে।
৩. Struts 2 Configuration File (struts.xml)
এখন Struts 2 কনফিগারেশন ফাইল তৈরি করুন যা অ্যাকশন এবং তাদের রেজাল্ট কনফিগার করবে।
<struts>
<package name="default" extends="struts-default">
<action name="greetUser" class="greetingAction" method="execute">
<result>/greeting.jsp</result>
</action>
</package>
</struts>
- greetingAction হলো Spring দ্বারা ম্যানেজড অ্যাকশন ক্লাস, যা Spring কনফিগারেশন ফাইলে
beanহিসেবে ডিফাইন করা হয়েছে।
৪. Action Class (GreetingAction.java)
এখন একটি সিম্পল Struts 2 অ্যাকশন ক্লাস তৈরি করুন যা Spring DI ব্যবহার করবে।
package com.example;
import org.springframework.beans.factory.annotation.Autowired;
import com.opensymphony.xwork2.ActionSupport;
public class GreetingAction extends ActionSupport {
private String name;
@Autowired
private GreetingService greetingService;
public String execute() {
name = greetingService.getGreetingMessage();
return SUCCESS;
}
// Getter and Setter Methods
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- GreetingService ক্লাসের মাধ্যমে আমরা Spring DI ব্যবহার করেছি।
@Autowiredএনোটেশন ব্যবহার করে আমরা GreetingService ক্লাসের একটি ইনস্ট্যান্স অ্যাকশন ক্লাসে ইনজেক্ট করছি।
৫. Service Class (GreetingService.java)
Spring Bean হিসেবে একটি Service ক্লাস তৈরি করুন, যা কিছু ব্যবসায়িক লজিক সম্পাদন করবে।
package com.example;
import org.springframework.stereotype.Service;
@Service
public class GreetingService {
public String getGreetingMessage() {
return "স্বাগতম, Struts 2 এবং Spring Integration!";
}
}
- এখানে @Service এনোটেশন ব্যবহার করে Spring কে জানান দেয়া হয়েছে যে এটি একটি সার্ভিস ক্লাস এবং এটি Spring Bean হিসেবে ব্যবহৃত হবে।
৬. JSP File (greeting.jsp)
অবশেষে, একটি JSP ফাইল তৈরি করুন যা অ্যাকশন ক্লাসের ডেটা প্রদর্শন করবে।
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
<h2><s:property value="name" /></h2>
</body>
</html>
- s:property ট্যাগ ব্যবহার করা হয়েছে যা GreetingAction ক্লাস থেকে
nameপ্রপার্টি প্রদর্শন করবে, যেটি GreetingService থেকে পাওয়ার পর সেট করা হয়েছে।
সারাংশ
Struts 2 এবং Spring Integration আপনাকে Spring এর শক্তিশালী Dependency Injection (DI) এবং Aspect-Oriented Programming (AOP) সুবিধাগুলি Struts 2 এর মধ্যে ব্যবহার করার সুযোগ দেয়। এই উদাহরণে, আমরা দেখিয়েছি কিভাবে Struts 2 অ্যাপ্লিকেশন Spring DI ব্যবহার করে Spring Beans ইনজেক্ট করতে পারে এবং কিভাবে Spring Service ক্লাস ব্যবহার করে অ্যাপ্লিকেশন লজিক পরিচালনা করতে পারে।
- Spring Bean ব্যবহারের মাধ্যমে আমরা অ্যাকশন ক্লাসের ডিপেনডেন্সি ইনজেক্ট করেছি।
- Spring Context থেকে Spring Beans নিয়ন্ত্রণ করতে আমরা
@Autowiredএবং@Serviceএনোটেশন ব্যবহার করেছি। - Struts 2 অ্যাকশনে Spring Bean ইনজেকশনের মাধ্যমে আপনার অ্যাপ্লিকেশনকে আরও মডুলার এবং রক্ষণাবেক্ষণযোগ্য করা সম্ভব হয়।
Read more