Spring DI (Dependency Injection) এর সাথে Struts 2 ব্যবহার

Struts 2 এবং Spring Integration - স্ট্রাটস (Struts 2) - Java Technologies

297

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
Promotion

Are you sure to start over?

Loading...