স্প্রিং ব্যাচ (Spring Batch) একটি শক্তিশালী ফ্রেমওয়ার্ক যা বড় পরিমাণ ডাটা প্রসেসিংয়ের জন্য ব্যবহৃত হয়। এতে ব্যাচ প্রসেসের বিভিন্ন ধাপ এবং স্টেপ কনফিগার করার জন্য দুটি প্রধান কনফিগারেশন পদ্ধতি রয়েছে: XML কনফিগারেশন এবং Java-based কনফিগারেশন। স্প্রিং ব্যাচে XML এবং Java-based কনফিগারেশন দুটি নির্দিষ্ট ভাবে ব্যবহৃত হয়, এবং দুটি কনফিগারেশন স্টাইলই যথেষ্ট জনপ্রিয়।
এখানে আমরা এই দুই কনফিগারেশন পদ্ধতির ব্যবহার এবং তাদের পার্থক্য সম্পর্কে আলোচনা করব।
XML-based Job Configuration
XML কনফিগারেশন স্প্রিং ব্যাচে সাধারণত applicationContext.xml বা অন্যান্য XML কনফিগারেশন ফাইল ব্যবহার করা হয়। এই পদ্ধতিতে, আপনার সমস্ত ব্যাচ জব এবং স্টেপ কনফিগারেশন XML ফাইলের মাধ্যমে তৈরি হয়, এবং স্প্রিং কনটেইনার তা লোড করে অ্যাপ্লিকেশন চলাকালে। 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
http://www.springframework.org/schema/batch
http://www.springframework.org/schema/batch/spring-batch-3.0.xsd">
<!-- JobLauncher -->
<bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
<property name="jobRepository" ref="jobRepository"/>
</bean>
<!-- Job Repository -->
<bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- Job Configuration -->
<bean id="myJob" class="org.springframework.batch.core.job.SimpleJob">
<property name="name" value="myJob"/>
<property name="steps">
<list>
<ref bean="step1"/>
<ref bean="step2"/>
</list>
</property>
</bean>
<!-- Step Configuration -->
<bean id="step1" class="org.springframework.batch.core.step.tasklet.TaskletStep">
<property name="tasklet" ref="tasklet1"/>
</bean>
<bean id="step2" class="org.springframework.batch.core.step.tasklet.TaskletStep">
<property name="tasklet" ref="tasklet2"/>
</bean>
<!-- Tasklet Configuration -->
<bean id="tasklet1" class="org.springframework.batch.core.step.tasklet.MethodInvokingTaskletAdapter">
<property name="targetObject" ref="myTasklet"/>
<property name="targetMethod" value="execute"/>
</bean>
<!-- DataSource -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="url" value="jdbc:h2:mem:testdb"/>
<property name="driverClassName" value="org.h2.Driver"/>
<property name="username" value="sa"/>
<property name="password" value="password"/>
</bean>
</beans>
এখানে, XML কনফিগারেশন এ Job, Step, এবং Tasklet কনফিগার করা হয়েছে, যা ব্যাচ প্রসেসিংয়ের ধাপগুলিকে সংজ্ঞায়িত করে। একাধিক স্টেপের মাধ্যমে একটি জব কনফিগার করা হয়েছে এবং ব্যাচ প্রসেসিং সম্পন্ন হয়।
XML-based Configuration এর সুবিধা:
- স্পষ্ট কনফিগারেশন এবং শাখায় ভাগ করা সহজ।
- বড় অ্যাপ্লিকেশনগুলিতে গঠনমূলক কনফিগারেশন সুবিধা প্রদান করে।
- স্প্রিং ফ্রেমওয়ার্কের ক্লাসের মধ্যে গভীর সম্পর্ক রয়েছে, তাই XML ফাইলের মাধ্যমে স্পষ্টভাবে কনফিগারেশন করা সম্ভব।
Java-based Job Configuration
Java-based কনফিগারেশন পদ্ধতি স্প্রিং ব্যাচে অধিক আধুনিক এবং ফ্লেক্সিবল। এখানে সমস্ত ব্যাচ জব এবং স্টেপ কনফিগারেশন Java কোডে করা হয়, সাধারণত স্প্রিং JavaConfig ব্যবহার করে। এই পদ্ধতি অনেক বেশি ইন্টারঅ্যাকটিভ এবং অ্যানোটেশন ভিত্তিক, যেটি বিশেষত কমপ্লেক্স কনফিগারেশন এ সহজতার জন্য আদর্শ।
উদাহরণ:
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class BatchConfig {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
public BatchConfig(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory) {
this.jobBuilderFactory = jobBuilderFactory;
this.stepBuilderFactory = stepBuilderFactory;
}
@Bean
public Job myJob() {
return jobBuilderFactory.get("myJob")
.start(step1())
.next(step2())
.build();
}
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.tasklet((contribution, chunkContext) -> {
System.out.println("Executing Step 1");
return null;
})
.build();
}
@Bean
public Step step2() {
return stepBuilderFactory.get("step2")
.tasklet((contribution, chunkContext) -> {
System.out.println("Executing Step 2");
return null;
})
.build();
}
}
এখানে, Java-based কনফিগারেশন পদ্ধতিতে Job এবং Step গুলি স্প্রিং @Configuration ক্লাসের মাধ্যমে কনফিগার করা হয়েছে। এটি খুবই ফ্লেক্সিবল এবং কাস্টমাইজেশন সহজ করে।
Java-based Configuration এর সুবিধা:
- টাইপ সেফটি এবং এডিটর সাপোর্ট পাওয়া যায়।
- কোডের মাধ্যমে কনফিগারেশন করা অনেক বেশি স্পষ্ট এবং ডিবাগিং করা সহজ।
- কমপ্লেক্স কনফিগারেশন এবং প্রোগ্রাম্যাটিক নিয়ন্ত্রণ সহজ হয়।
XML এবং Java-based Configuration এর পার্থক্য
| বৈশিষ্ট্য | XML-based Configuration | Java-based Configuration |
|---|---|---|
| কনফিগারেশন স্টাইল | XML ফাইল ব্যবহার করা হয় | Java কোডের মধ্যে কনফিগারেশন করা হয় |
| ফ্লেক্সিবিলিটি | তুলনামূলকভাবে কম | অনেক বেশি ফ্লেক্সিবল |
| প্রত্যাহারের সহজতা | XML ফাইলের মাধ্যমে সহজ | কোডের মাধ্যমে আরো সহজ এবং ডিবাগযোগ্য |
| টাইপ সেফটি | সাধারণত কম | টাইপ সেফ এবং IDE সাপোর্ট রয়েছে |
| কাস্টমাইজেশন | XML কনফিগারেশন অনুযায়ী | কোডে কাস্টম লজিক প্রয়োগ করা যায় |
সারাংশ
স্প্রিং ব্যাচে XML-based এবং Java-based কনফিগারেশন উভয় পদ্ধতি ব্যবহৃত হয়। XML-based কনফিগারেশন একটি দীর্ঘ সময়ের জন্য ব্যবহৃত হলেও, Java-based কনফিগারেশন বেশি আধুনিক এবং আরো ফ্লেক্সিবল। Java-based কনফিগারেশন স্প্রিং অ্যাপ্লিকেশনের কোডিং প্রক্রিয়াকে আরো পরিষ্কার, টাইপ সেফ এবং ডিবাগযোগ্য করে তোলে। দুইটি পদ্ধতিই স্প্রিং ব্যাচের শক্তিশালী কাজের জন্য যথেষ্ট কার্যকর, তবে আপনার প্রজেক্টের প্রয়োজন অনুযায়ী আপনি একটি বেছে নিতে পারেন।
Read more