Struts 2 এবং Spring Integration

স্ট্রাটস (Struts 2) - Java Technologies

341

Struts 2 এবং Spring দুটি জনপ্রিয় Java ফ্রেমওয়ার্ক, যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য ব্যবহৃত হয়। Struts 2 মূলত MVC (Model-View-Controller) আর্কিটেকচার অনুসরণ করে ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য ব্যবহৃত হয়, আর Spring হলো একটি সমৃদ্ধ এবং পূর্ণাঙ্গ ফ্রেমওয়ার্ক যা ডিপেনডেন্সি ইনজেকশন (DI), অ্যাসপেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (AOP), ট্রানজ্যাকশন ম্যানেজমেন্ট এবং অন্যান্য ফিচার সরবরাহ করে।

Struts 2 এবং Spring এর ইন্টিগ্রেশন আপনাকে উভয়ের সুবিধা একত্রে ব্যবহার করার সুযোগ দেয়। এটি আপনাকে Spring এর শক্তিশালী ডিপেনডেন্সি ইনজেকশন এবং অন্যান্য সুবিধাগুলির সঙ্গে Struts 2 এর MVC ফিচার ব্যবহার করতে সহায়তা করে।

Struts 2 এবং Spring Integration এর প্রয়োজনীয়তা

  1. ডিপেনডেন্সি ইনজেকশন (Dependency Injection): Spring এর ডিপেনডেন্সি ইনজেকশন ফিচার আপনাকে Struts 2 অ্যাকশনে ডিপেনডেন্সি ইনজেক্ট করতে সাহায্য করে, যা কোডের পুনঃব্যবহারযোগ্যতা এবং সহজ টেস্টিং নিশ্চিত করে।
  2. ইউনিট টেস্টিং: Spring এর AOP এবং DI আপনাকে সহজেই Struts 2 অ্যাকশন ক্লাসের জন্য ইউনিট টেস্ট তৈরি করতে সহায়তা করে।
  3. ট্রানজ্যাকশন ম্যানেজমেন্ট: Spring-এর ট্রানজ্যাকশন ম্যানেজমেন্ট সিস্টেম ব্যবহার করে আপনি Struts 2 অ্যাপ্লিকেশনে ডাটাবেসের সঙ্গে সম্পর্কিত কার্যক্রম ম্যানেজ করতে পারেন।
  4. শক্তিশালী মডিউলার ফিচার: Spring এর মাধ্যমে আপনি Struts 2 অ্যাপ্লিকেশনের বিভিন্ন অংশকে সহজভাবে আলাদা করতে পারেন এবং পরে প্রয়োজনমতো একে অপরের সঙ্গে যুক্ত করতে পারেন।

Struts 2 এবং Spring Integration এর জন্য কনফিগারেশন

Struts 2 এবং Spring এর ইন্টিগ্রেশন করার জন্য আপনাকে কিছু কনফিগারেশন করতে হবে। এখানে কিছু গুরুত্বপূর্ণ ধাপ দেখানো হল:

  1. Spring Context Configuration: Spring কনটেক্সট কনফিগারেশন ফাইল তৈরি করুন যেখানে Spring Bean এবং অন্যান্য কনফিগারেশন থাকবে।
  2. Struts 2 Configuration: Struts 2 এর জন্য কনফিগারেশন ফাইল (struts.xml) তৈরি করুন।
  3. Integration of Spring in Struts 2: Spring Bean কনফিগারেশনের সাথে Struts 2 অ্যাকশন ক্লাসগুলোকে ইন্টিগ্রেট করুন।

উদাহরণ: Struts 2 এবং Spring Integration

এখানে একটি উদাহরণ দেয়া হচ্ছে যেখানে Struts 2 এবং Spring ইন্টিগ্রেট করা হয়েছে।

1. Spring Configuration (applicationContext.xml)

<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">
    
    <!-- Spring Bean Configuration -->
    <bean id="helloWorldService" class="com.example.HelloWorldService"/>
    
</beans>

এখানে, একটি Spring Bean helloWorldService তৈরি করা হয়েছে যা com.example.HelloWorldService ক্লাসের ইনস্ট্যান্স তৈরি করবে।

2. Action Class (HelloWorldAction.java)

package com.example;

import com.opensymphony.xwork2.ActionSupport;
import org.springframework.beans.factory.annotation.Autowired;

public class HelloWorldAction extends ActionSupport {
    
    private String message;

    @Autowired
    private HelloWorldService helloWorldService;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    @Override
    public String execute() {
        // Spring Service থেকে মেসেজ গ্রহণ
        message = helloWorldService.getHelloMessage();
        return SUCCESS;
    }
}

এখানে, HelloWorldAction ক্লাসে Spring Bean HelloWorldService ইনজেক্ট করা হয়েছে। execute() মেথডে এটি ব্যবহার করে আমরা message প্রপার্টি সেট করি।

3. Spring Bean Class (HelloWorldService.java)

package com.example;

public class HelloWorldService {

    public String getHelloMessage() {
        return "Hello from Spring!";
    }
}

এখানে, HelloWorldService ক্লাস একটি সাধারণ মেথড getHelloMessage() প্রদান করে, যা একটি মেসেজ রিটার্ন করে।

4. struts.xml (Action Mapping)

<struts>
    <package name="default" extends="struts-default">
        <action name="helloWorld" class="com.example.HelloWorldAction">
            <result>/helloWorld.jsp</result>
        </action>
    </package>
</struts>

এখানে, helloWorld অ্যাকশনটি HelloWorldAction ক্লাসের সাথে সম্পর্কিত এবং helloWorld.jsp ফাইলের মধ্যে রেজাল্ট শো করবে।

5. JSP File (helloWorld.jsp)

<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
    <title>Struts 2 and Spring Integration</title>
</head>
<body>
    <h2>Message: <s:property value="message" /></h2>
</body>
</html>

এখানে, helloWorld.jsp পৃষ্ঠায় message প্রপার্টি প্রদর্শন করা হচ্ছে, যা HelloWorldAction থেকে আসবে।

6. web.xml (Spring Context Integration)

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
             http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- Spring Context Loader Listener -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- Spring Context Configuration -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

এখানে, Spring-এর কনটেক্সট লোডার লিসেনার এবং কনফিগারেশন ফাইল applicationContext.xml রেফারেন্স করা হয়েছে।


Struts 2 এবং Spring Integration এর উপকারিতা

  1. Dependency Injection (DI): Spring এর DI ফিচারের মাধ্যমে আপনি Struts 2 অ্যাকশন ক্লাসে সহজে ডিপেনডেন্সি ইনজেক্ট করতে পারেন, যা কোডের পরিষ্কারতা এবং টেস্টিংকে সহজ করে।
  2. Centralized Configuration: Spring এর মাধ্যমে আপনি আপনার অ্যাপ্লিকেশন কনফিগারেশন সহজে সেন্ট্রালাইজডভাবে করতে পারেন, যা Struts 2 অ্যাকশন এবং অন্যান্য ফিচারগুলোকে সমন্বিত করে।
  3. Transaction Management: Spring এর শক্তিশালী ট্রানজ্যাকশন ম্যানেজমেন্ট ফিচার ব্যবহার করে আপনি Struts 2 অ্যাপ্লিকেশনগুলিতে ডাটাবেস ট্রানজ্যাকশন পরিচালনা করতে পারেন।
  4. Aspect-Oriented Programming (AOP): Spring এর AOP ব্যবহার করে আপনি কাস্টম ইন্টারসেপ্টর এবং ক্রস-কাটিং কনসার্ন (যেমন লগিং, সিকিউরিটি চেক) সহজভাবে যুক্ত করতে পারেন।
  5. Testability: Spring DI এর মাধ্যমে সহজে ইউনিট টেস্ট এবং ইন্টিগ্রেশন টেস্ট তৈরি করা সম্ভব।

সারাংশ

Struts 2 এবং Spring Integration আপনাকে দুইটি শক্তিশালী ফ্রেমওয়ার্কের সুবিধা একসাথে ব্যবহারের সুযোগ দেয়। Spring-এর ডিপেনডেন্সি ইনজেকশন, ট্রানজ্যাকশন ম্যানেজমেন্ট এবং AOP ফিচার ব্যবহার করে আপনি Struts 2 অ্যাপ্লিকেশনগুলিকে আরও শক্তিশালী, টেস্টেবল এবং স্কেলেবল করতে পারেন। এই ইন্টিগ্রেশন কোডের পুনঃব্যবহারযোগ্যতা এবং অ্যাপ্লিকেশনের মডুলারিটি বাড়ায়।

Content added By

Spring Framework কি?

Spring Framework হল একটি ওপেন সোর্স ফ্রেমওয়ার্ক যা Java EE ভিত্তিক অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য ব্যবহৃত হয়। এটি জাভার প্রোগ্রামিং ভাষায় এন্টারপ্রাইজ অ্যাপ্লিকেশন তৈরি করার জন্য সবচেয়ে জনপ্রিয় এবং শক্তিশালী ফ্রেমওয়ার্কগুলির মধ্যে একটি। Spring Framework বিভিন্ন ধরনের টেকনোলজি এবং অ্যাপ্লিকেশন ডেভেলপমেন্ট প্রক্রিয়ার সাথে কাজ করতে সক্ষম, এবং এটি একটি লাইটওয়েট কনটেইনার সাপোর্ট করে, যার মাধ্যমে সহজেই জাভা ক্লাসগুলোর Dependency Injection (DI) এবং Aspect-Oriented Programming (AOP) পরিচালনা করা যায়।

Spring Framework-এর মূল উদ্দেশ্য হল জাভা অ্যাপ্লিকেশন ডেভেলপমেন্টকে সহজ, নমনীয়, এবং স্কেলেবল করা। এটি বিভিন্ন জটিলতা হ্রাস করতে সাহায্য করে, যেমন- ট্রানজেকশন ম্যানেজমেন্ট, ডেটাবেস অ্যাক্সেস, এবং অন্যান্য সাধারণ এন্টারপ্রাইজ লজিক সহজে পরিচালনা করা।


Spring Framework এর প্রধান বৈশিষ্ট্য

Spring Framework একটি অত্যন্ত ব্যাপক এবং শক্তিশালী ফ্রেমওয়ার্ক, যা অনেকগুলি বৈশিষ্ট্য সরবরাহ করে, কিছু প্রধান বৈশিষ্ট্য নিম্নরূপ:

1. Dependency Injection (DI)

Spring Framework-এ Dependency Injection একটি মূল বৈশিষ্ট্য যা আপনাকে ক্লাসের মধ্যে অবজেক্টগুলো ইনজেক্ট করতে সাহায্য করে। এটি জাভা ক্লাসগুলির মধ্যে সঠিকভাবে অবজেক্টগুলো এবং তাদের ডিপেনডেন্সি সম্পর্ক স্থাপন করে এবং কোডের মেইনটেনেন্স সহজতর করে। DI এর মাধ্যমে আপনি একাধিক অবজেক্টের মধ্যে ডিপেনডেন্সি ম্যানেজ করতে পারেন, যা কোডের পুনঃব্যবহারযোগ্যতা এবং টেস্টেবিলিটি বাড়ায়।

2. Aspect-Oriented Programming (AOP)

Spring AOP সাপোর্ট করে, যা প্রোগ্রামিং প্যাটার্নের একটি অংশ। AOP এর মাধ্যমে ক্রস-কাটিং কনসার্ন যেমন লগিং, সিকিউরিটি, এবং ট্রানজেকশন ম্যানেজমেন্ট অ্যালগরিদমগুলি মেথড কলগুলির আগে বা পরে এক্সিকিউট করা যায়। এটি কোডে বিভাজন এনে ডুপ্লিকেশন কমাতে সাহায্য করে।

3. Spring MVC (Model-View-Controller)

Spring MVC একটি শক্তিশালী ওয়েব মডেল তৈরি করতে সাহায্য করে, যেখানে আপনি Model, View, এবং Controller এর মাধ্যমে কোডকে বিভক্ত করতে পারেন। Spring MVC-তে DispatcherServlet একটি কেন্দ্রীয় রুটার হিসেবে কাজ করে এবং সমস্ত রিকোয়েস্টকে নিয়ন্ত্রণ করে।

4. Transaction Management

Spring Framework একটি সঠিক ট্রানজেকশন ম্যানেজমেন্ট সিস্টেম সরবরাহ করে, যা একাধিক ডেটাবেস এবং অন্যান্য এন্টারপ্রাইজ রিসোর্সের উপর অ্যাক্সেস এবং ট্রানজেকশন পরিচালনা করতে সাহায্য করে।

5. Integration with Other Frameworks

Spring Framework অনেকগুলি জনপ্রিয় ফ্রেমওয়ার্ক এবং টেকনোলজির সাথে ইন্টিগ্রেট করা যায়। যেমন Hibernate, JPA, JMS, JMX, JavaMail, and other enterprise-level technologies.

6. Lightweight Framework

Spring Framework একটি লাইটওয়েট ফ্রেমওয়ার্ক, যার মানে এটি কম্পোনেন্টগুলোকে লোড এবং ব্যবহারের ক্ষেত্রে স্বল্প পরিমাণ রিসোর্স নেয়। এর মাধ্যমে কম্পোনেন্টগুলোকে স্বতন্ত্রভাবে পরিচালনা করা যায় এবং একে একে তাদের অন্তর্ভুক্ত করা যায়।


Struts 2 এবং Spring Framework এর সংমিশ্রণ

Struts 2 এবং Spring Framework একত্রে ব্যবহার করার ফলে আরও উন্নত, স্কেলেবল, এবং মেইনটেনেবল অ্যাপ্লিকেশন তৈরি করা যায়। Struts 2, যেখানে একটি শক্তিশালী MVC ফ্রেমওয়ার্ক, Spring তার Dependency Injection এবং Transaction Management এর মাধ্যমে সার্বিক অ্যাপ্লিকেশন কাঠামোকে আরও নমনীয় করে তোলে।

কেন Struts 2 এবং Spring একত্রে ব্যবহার করা হয়?

  1. Separation of Concerns (SoC): Struts 2 Action ক্লাসে প্রোগ্রাম লজিক থাকে, এবং Spring DI-এর মাধ্যমে ক্লাসগুলির মধ্যে অবজেক্ট ইনজেকশনের মাধ্যমে সার্ভিস বা অন্যান্য লজিককে আলাদা করা যায়।
  2. Transaction Management: Spring এর শক্তিশালী ট্রানজেকশন ম্যানেজমেন্টের মাধ্যমে Struts 2 অ্যাপ্লিকেশনগুলোতে ট্রানজেকশন পরিচালনা করা যায়।
  3. Integration with Other Technologies: Spring এর মাধ্যমে Hibernate বা JPA সহ বিভিন্ন ডেটাবেস প্রযুক্তি সহজে ইন্টিগ্রেট করা যায়, যা Struts 2 অ্যাপ্লিকেশনকে ডেটাবেস ইন্টিগ্রেশনেও আরও শক্তিশালী করে তোলে।
  4. Reusability and Maintainability: Spring এর DI এবং AOP এর মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা এবং মেইনটেনেন্স সহজতর হয়, যার ফলে Struts 2 অ্যাপ্লিকেশনকে দ্রুত এবং কার্যকরীভাবে ডেভেলপ করা যায়।

Struts 2 এবং Spring Framework এর সংমিশ্রণে উদাহরণ

এখানে একটি উদাহরণ দেখানো হয়েছে যেখানে Struts 2 এবং Spring Framework একত্রে ব্যবহৃত হচ্ছে।

1. Spring Configuration File (applicationContext.xml)

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

    <bean id="userService" class="com.example.UserServiceImpl" />
</beans>

2. Struts 2 Action Class with Spring Integration

package com.example;

import com.opensymphony.xwork2.ActionSupport;
import org.springframework.beans.factory.annotation.Autowired;

public class UserAction extends ActionSupport {

    @Autowired
    private UserService userService;  // Spring bean injection

    public String execute() {
        // Use Spring service to perform business logic
        userService.createUser("John Doe");
        return SUCCESS;
    }

    // Getters and setters for userService
    public UserService getUserService() {
        return userService;
    }

    public void setUserService(UserService userService) {
        this.userService = userService;
    }
}

3. Struts 2 Configuration File (struts.xml)

<struts>
    <package name="default" extends="struts-default">
        <action name="userAction" class="com.example.UserAction">
            <result>/success.jsp</result>
        </action>
    </package>
</struts>

4. Spring and Struts 2 Integration

Struts 2-এ Spring bean ইন্টিগ্রেশন নিশ্চিত করার জন্য, Spring DI ব্যবহার করতে Spring Context (applicationContext.xml) ব্যবহার করতে হবে এবং Struts 2 action ক্লাসে @Autowired বা XML কনফিগারেশন দ্বারা Spring beans ইনজেক্ট করতে হবে।


সারাংশ

Spring Framework একটি শক্তিশালী এবং নমনীয় ফ্রেমওয়ার্ক যা Java EE-এ তৈরি অ্যাপ্লিকেশনগুলির জন্য অপরিহার্য। এটি Dependency Injection, Aspect-Oriented Programming (AOP), Transaction Management, এবং MVC Architecture এর মতো বৈশিষ্ট্য সরবরাহ করে। Struts 2 এর সাথে Spring Framework একত্রে ব্যবহার করে একটি স্কেলেবল, মডুলার, এবং সহজে পরিচালনাযোগ্য অ্যাপ্লিকেশন তৈরি করা সম্ভব। Spring-এর DI এবং AOP ফিচার Struts 2 অ্যাপ্লিকেশনগুলির লজিক এবং কার্যক্রম সহজে ম্যানেজ করতে সাহায্য করে, যার ফলে কোডের রিডেবিলিটি, পুনঃব্যবহারযোগ্যতা এবং মেইনটেনেন্স বাড়ে।

Content added By

Struts 2 এবং Spring দুটি জনপ্রিয় Java ফ্রেমওয়ার্ক যা সাধারণত ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয়। Struts 2 মূলত Model-View-Controller (MVC) আর্কিটেকচারের উপর ভিত্তি করে কাজ করে, যেখানে Spring একটি ওপেন সোর্স ফ্রেমওয়ার্ক যা ইনভার্সন অব কন্ট্রোল (IoC), ট্রানজেকশন ম্যানেজমেন্ট, এবং ডাটাবেস ইন্টিগ্রেশনসহ বিভিন্ন বৈশিষ্ট্য প্রদান করে।

Struts 2 এবং Spring একসাথে ব্যবহার করলে, আপনি Struts 2 এর MVC ফ্রেমওয়ার্কের সুবিধা পেতে পারেন, এবং Spring এর Dependency Injection (DI), AOP (Aspect Oriented Programming), এবং Transaction Management সাপোর্ট ব্যবহার করতে পারেন। এই দুইটি ফ্রেমওয়ার্ক একত্রে অ্যাপ্লিকেশন তৈরি করতে একটি শক্তিশালী এবং নমনীয় প্ল্যাটফর্ম প্রদান করে।

Struts 2 এবং Spring Integration এর সুবিধা

  1. Separation of Concerns (SoC):
    • Struts 2 Controller হিসেবে কাজ করে, যেখানে Spring ব্যবহৃত হয় Service Layer বা Business Logic এর জন্য। এইভাবে, লজিক এবং কন্ট্রোলার কোড আলাদা রাখা যায়, যা অ্যাপ্লিকেশনের রক্ষণাবেক্ষণ সহজ করে।
  2. Dependency Injection (DI):
    • Spring ফ্রেমওয়ার্কের DI সুবিধা ব্যবহৃত হলে, অ্যাকশন ক্লাস এবং Spring এর সার্ভিসগুলি একে অপরের সাথে সহজভাবে সংযুক্ত হতে পারে, যেখানে Spring নিজে Spring Beans কে ম্যানেজ করে এবং প্রাসঙ্গিক dependency গুলি অ্যাকশনের মধ্যে ইনজেক্ট করে দেয়।
  3. Transaction Management:
    • Spring ফ্রেমওয়ার্কের মাধ্যমে ডাটাবেস লেনদেন ব্যবস্থাপনা সহজ করা যায়। Spring এর ট্রানজেকশন ম্যানেজার ব্যবহার করে আপনি Struts 2 অ্যাপ্লিকেশনের জন্য একটি শক্তিশালী ট্রানজেকশন ম্যানেজমেন্ট সিস্টেম তৈরি করতে পারেন।
  4. Security:
    • Spring Security ব্যবহার করে আপনি অ্যাপ্লিকেশনটি আরও নিরাপদ করতে পারেন। Spring Security এর মাধ্যমে আপনি ইউজার অথেনটিকেশন এবং অথরাইজেশন পরিচালনা করতে পারেন, যা Struts 2 অ্যাপ্লিকেশনে সংযুক্ত করা যেতে পারে।
  5. Easy Integration with Data Sources:
    • Spring ডাটাবেস সংযোগের জন্য একটি সহজ এবং নমনীয় API প্রদান করে। Struts 2 এর মাধ্যমে Spring এর হাইবারনেট বা JPA সাপোর্ট সহ ডাটাবেস ইন্টিগ্রেশন করা সহজ হয়।

Struts 2 এবং Spring Integration এর উদাহরণ

1. Maven Dependency Configuration

প্রথমে, আপনার pom.xml ফাইলে Struts 2 এবং Spring এর জন্য প্রয়োজনীয় ডিপেন্ডেন্সি যোগ করতে হবে।

<dependencies>
    <!-- Struts 2 dependencies -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.22</version>
    </dependency>

    <!-- Spring dependencies -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.10</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>5.3.10</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>5.3.10</version>
    </dependency>

    <!-- Spring and Struts Integration -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>2.5.22</version>
    </dependency>
</dependencies>

এখানে, struts2-spring-plugin ডিপেনডেন্সি Struts 2 এবং Spring এর মধ্যে ইন্টিগ্রেশন সাপোর্ট করে।

2. Spring Configuration

Spring এর কনফিগারেশন ফাইল applicationContext.xml এ করা হবে, যেখানে আপনি Spring Beans, Transaction Management এবং Dependency Injection কনফিগার করবেন।

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

    <!-- Define a Spring Bean for the service -->
    <bean id="helloService" class="com.example.HelloService" />
</beans>

3. Struts 2 Action Class with Spring Integration

এখন, Struts 2 Action Class তৈরি করা হবে যেখানে Spring Beans ব্যবহার করা হবে। Spring এর Dependency Injection (DI) ব্যবহার করে, Spring Bean গুলি Struts 2 অ্যাকশন ক্লাসে ইনজেক্ট করা হবে।

package com.example;

import com.opensymphony.xwork2.ActionSupport;
import org.springframework.beans.factory.annotation.Autowired;

public class HelloAction extends ActionSupport {

    @Autowired
    private HelloService helloService;

    private String message;

    public String execute() {
        // Spring service ব্যবহার করা
        message = helloService.getMessage();
        return SUCCESS;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
  • এখানে, HelloService Spring Bean হিসাবে ইনজেক্ট করা হয়েছে, যা getMessage() মেথডের মাধ্যমে অ্যাকশন ক্লাসে ডেটা সরবরাহ করবে।

4. Struts 2 Action Configuration (struts.xml)

struts.xml ফাইলে, অ্যাকশন কনফিগার করা হবে যাতে অ্যাকশনটি Spring ফ্রেমওয়ার্কের সাথে সংযুক্ত হয়।

<?xml version="1.0" encoding="UTF-8"?>
<struts>
    <package name="default" extends="struts-default">
        
        <!-- Spring Integration for Actions -->
        <action name="hello" class="com.example.HelloAction">
            <result>/WEB-INF/content/hello.jsp</result>
        </action>
        
    </package>
</struts>

5. JSP Page (hello.jsp)

অ্যাকশন ক্লাস থেকে ডেটা সরবরাহ করার পর, এটি JSP পেজে প্রদর্শিত হবে।

<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head><title>Struts 2 and Spring Integration Example</title></head>
<body>
    <h1><s:property value="message"/></h1>
</body>
</html>
  • এখানে, s:property ট্যাগটি ব্যবহার করে অ্যাকশন ক্লাস থেকে প্রাপ্ত message প্রপার্টি JSP পেজে প্রদর্শন করা হয়েছে।

Struts 2 এবং Spring Integration এর সুবিধা

  1. Separation of Concerns (SoC):
    • Spring এবং Struts 2 একত্রে ব্যবহৃত হলে, অ্যাকশনের কন্ট্রোলার লজিক (Struts 2) এবং ব্যবসায়িক লজিক (Spring) পৃথক থাকে, যা কোড রক্ষণাবেক্ষণ এবং স্কেলিংকে সহজ করে তোলে।
  2. Dependency Injection (DI):
    • Spring এর DI সিস্টেমের মাধ্যমে Struts 2 অ্যাকশন ক্লাসে Spring Beans ইনজেক্ট করা সম্ভব হয়, যা ডেটা এবং লজিক পৃথক করে কাজ করে।
  3. Transaction Management:
    • Spring এর মাধ্যমে ট্রানজেকশন ম্যানেজমেন্ট খুব সহজ এবং ফ্লেক্সিবল, যা Struts 2 অ্যাপ্লিকেশনে ডেটাবেস লেনদেন পরিচালনা করতে সহায়তা করে।
  4. Easy Testing:
    • Spring এর dependency injection এবং AOP (Aspect-Oriented Programming) এর মাধ্যমে, Struts 2 অ্যাকশন ক্লাসের টেস্টিং সহজ হয়।

সারাংশ

Struts 2 এবং Spring Integration আপনাকে একটি শক্তিশালী এবং নমনীয় প্ল্যাটফর্ম প্রদান করে, যেখানে আপনি Struts 2 এর MVC ফ্রেমওয়ার্ক এবং Spring এর Dependency Injection (DI), Transaction Management, এবং AOP সাপোর্ট একত্রে ব্যবহার করতে পারেন। এই ইন্টিগ্রেশন দ্বারা অ্যাপ্লিকেশনটি আরও শক্তিশালী, স্কেলেবল এবং রক্ষণাবেক্ষণযোগ্য হয়ে ওঠে।

Content added By

Struts 2 এবং Spring দুটি অত্যন্ত জনপ্রিয় ফ্রেমওয়ার্ক যা Java EE অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয়। Spring Dependency Injection (DI) ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের কম্পোনেন্টগুলোর মধ্যে সঠিক নির্ভরতা (dependencies) স্বয়ংক্রিয়ভাবে ইনজেক্ট করতে পারেন, যা কোডকে আরও নমনীয়, রক্ষণাবেক্ষণযোগ্য এবং টেস্টযোগ্য করে তোলে। Struts 2 এবং Spring DI একসাথে ব্যবহারের মাধ্যমে আপনি শক্তিশালী এবং সহজে রক্ষণাবেক্ষণযোগ্য অ্যাপ্লিকেশন তৈরি করতে পারেন।

Struts 2 তে Spring Dependency Injection ব্যবহারের মাধ্যমে Spring এর DI সুবিধাগুলি ব্যবহার করে Struts 2 অ্যাকশনের মধ্যে Spring Bean ইনজেক্ট করা সম্ভব হয়।


Struts 2 এবং Spring DI একসাথে ব্যবহারের সুবিধা

  1. Loose Coupling: Spring DI আপনাকে ক্লাসগুলির মধ্যে নমনীয় এবং সস্তভাবে পরিবর্তনযোগ্য কোড লেখার সুবিধা দেয়, কারণ নির্ভরতা Spring কন্টেইনার থেকে স্বয়ংক্রিয়ভাবে ইনজেক্ট করা হয়।
  2. Easy Testability: Spring DI এর মাধ্যমে কোড টেস্ট করা সহজ হয় কারণ আপনি মক বা স্টাব বিহীন উপাদানগুলি সরাসরি Spring কন্টেইনারে ব্যবহৃত করতে পারেন।
  3. Better Maintainability: Spring DI এর মাধ্যমে কম্পোনেন্টের স্বতন্ত্র ব্যবস্থাপনা হয়, যা অ্যাপ্লিকেশনের রক্ষণাবেক্ষণ সহজ করে।

Spring DI এবং Struts 2 এর সাথে কনফিগারেশন

Struts 2 এর মধ্যে Spring DI ব্যবহারের জন্য কিছু স্টেপ অনুসরণ করতে হবে:

  1. Spring Bean কনফিগারেশন
  2. Struts 2 অ্যাকশন ক্লাসে Spring Bean ইনজেকশন
  3. Struts 2 এবং Spring কনফিগারেশন

১. Spring Bean কনফিগারেশন

Spring কনটেইনারের মাধ্যমে আপনার Spring Beans কনফিগার করা হয়। একটি applicationContext.xml ফাইল তৈরি করুন এবং সেখানে Spring Beans কনফিগার করুন।

applicationContext.xml উদাহরণ:

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

    <!-- Spring Bean Configuration -->
    <bean id="userService" class="com.example.UserServiceImpl"/>
</beans>

এখানে userService একটি Spring Bean হিসেবে কনফিগার করা হয়েছে।


২. Struts 2 অ্যাকশন ক্লাসে Spring Bean ইনজেকশন

Struts 2 এর অ্যাকশন ক্লাসে Spring Bean ইনজেক্ট করতে হলে আপনাকে Spring এর DI (Dependency Injection) ব্যবহার করতে হবে। Spring এর কনটেইনার থেকে Spring Beans ইনজেক্ট করতে @Autowired অ্যানোটেশন ব্যবহার করা যেতে পারে, বা আপনি XML কনফিগারেশনের মাধ্যমে setters ব্যবহার করে Bean ইনজেক্ট করতে পারেন।

UserAction.java উদাহরণ:

import com.opensymphony.xwork2.ActionSupport;
import org.springframework.beans.factory.annotation.Autowired;

public class UserAction extends ActionSupport {

    private String username;
    
    @Autowired
    private UserService userService;  // Spring Bean Inject

    public String execute() {
        // Use the Spring Bean
        userService.saveUser(username);
        return SUCCESS;
    }

    // Getters and Setters
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

এখানে, UserService ক্লাসটি Spring Bean হিসেবে ইনজেক্ট করা হয়েছে এবং execute() মেথডে সেই Bean ব্যবহার করা হচ্ছে।


৩. Struts 2 এবং Spring কনফিগারেশন

Struts 2 এর কনফিগারেশন ফাইলে Spring DI ব্যবহারের জন্য Spring কনফিগারেশন ফাইলকে লোড করতে হবে। এতে Spring কনটেইনার তৈরি হবে এবং Spring Beans Struts 2 অ্যাকশন ক্লাসে ইনজেক্ট করা হবে।

struts.xml কনফিগারেশন:

<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="userAction" class="com.example.UserAction">
            <result name="success">/welcome.jsp</result>
        </action>
    </package>
</struts>

web.xml কনফিগারেশন (Spring Integration):

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
             http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

    <!-- Spring DispatcherServlet -->
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Struts 2 Filter -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

এখানে, DispatcherServlet Spring কনটেইনার ইনিশিয়ালাইজ করবে এবং applicationContext.xml ফাইল থেকে Spring Beans লোড করবে।


Spring DI এর সাথে Struts 2 এর একত্রিত ব্যবহার করার সুবিধা:

  1. Loose Coupling: Spring DI ব্যবহারের মাধ্যমে আপনি আপনার অ্যাপ্লিকেশন কোডকে loosely coupled রাখতে পারবেন, কারণ Spring কনটেইনার Spring Beans কে ইনজেক্ট করে।
  2. Code Reusability: Spring Beans একবার তৈরি করে একাধিক অ্যাকশনে ব্যবহার করা যায়।
  3. Testability: Spring DI ব্যবহারের ফলে অ্যাপ্লিকেশন কোড সহজে টেস্ট করা যায়, কারণ আপনি Spring Beans মক করতে পারেন।
  4. Centralized Configuration: Spring DI এর মাধ্যমে সমস্ত নির্ভরতাগুলি একটি সেন্ট্রাল কনফিগারেশনে (Spring context) পরিচালিত হতে পারে।
  5. Scalability: Spring DI ব্যবহারের মাধ্যমে অ্যাপ্লিকেশনটি খুব সহজেই স্কেল করা যায়, কারণ আপনি সহজেই নতুন ফিচার বা পরিষেবা যোগ করতে পারেন।

সারাংশ

Struts 2 এবং Spring Dependency Injection (DI) একসাথে ব্যবহারের মাধ্যমে আপনি একটি শক্তিশালী, নমনীয় এবং রক্ষণাবেক্ষণযোগ্য অ্যাপ্লিকেশন তৈরি করতে পারেন। Spring DI এর মাধ্যমে Struts 2 অ্যাকশন ক্লাসে Spring Beans ইনজেক্ট করা সম্ভব হয়, যা অ্যাপ্লিকেশনটির কোডকে আরও সহজ এবং ক্লিন রাখে। Spring কনটেইনারের সাথে Struts 2 ইন্টিগ্রেট করার জন্য struts.xml এবং applicationContext.xml কনফিগারেশন ফাইলের মাধ্যমে সিস্টেম কনফিগার করা হয়। Struts 2 এর সাথে Spring DI ব্যবহার করলে কোড রিইউজেবিলিটি, টেস্টযোগ্যতা এবং কোডের রক্ষণাবেক্ষণ সুবিধা অনেক বেড়ে যায়।

Content added By

Struts 2 এবং Spring দুটি জনপ্রিয় জাভা ফ্রেমওয়ার্ক যা ওয়েব অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। Struts 2 একটি MVC ফ্রেমওয়ার্ক, যেখানে Spring একটি শক্তিশালী dependency injection (DI) এবং AOP (Aspect-Oriented Programming) ফ্রেমওয়ার্ক। যখন এই দুটি ফ্রেমওয়ার্ক একত্রিত করা হয়, তখন এটি একটি শক্তিশালী এবং মডুলার অ্যাপ্লিকেশন আর্কিটেকচার তৈরি করতে সহায়তা করে।

Struts 2 এবং Spring Integration এর সুবিধা

  1. Dependency Injection (DI): Spring DI ব্যবহারের মাধ্যমে অ্যাকশন ক্লাসগুলিতে অবজেক্ট ইনজেকশন করা সম্ভব হয়, যার ফলে কোডের রক্ষণাবেক্ষণ সহজ হয় এবং টেস্টিংও করা যায়।
  2. Transaction Management: Spring-এর ট্রানজেকশন ম্যানেজমেন্ট ব্যবহার করে আপনি Struts 2 অ্যাপ্লিকেশনকে খুব সহজে ট্রানজেকশন হ্যান্ডলিং করতে পারবেন।
  3. 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 ইনজেকশনের মাধ্যমে আপনার অ্যাপ্লিকেশনকে আরও মডুলার এবং রক্ষণাবেক্ষণযোগ্য করা সম্ভব হয়।
Content added By
Promotion

Are you sure to start over?

Loading...