<!-- write it to MongoDB, 'employee' collection (table) --> <bean id="mongodbItemWriter" class="org.springframework.batch.item.data.MongoItemWriter"> <property name="template" ref="mongoTemplate" /> <property name="collection" value="employee" /> </bean>These are possible parameters:
<!-- reader it from MongoDB, 'employee' collection (table) --> <bean id="mongodbItemReader" class="org.springframework.batch.item.data.MongoItemReader"> <property name="template" ref="mongoTemplate" /> <property name="query" value="{age: {$gt: 22}" /> </bean>We have three kinds of parameters:
public class DocumentEmployeeConverter implements Converter<DBObject Employee> { @Override public Employee convert(DBObject document) { Employee emp = new Employee(); emp.setEmpid((String)document.get("_id")); emp.setName((String)document.get("name")); emp.setAge((Integer)document.get("age")); emp.setSalary((Integer)document.get("salary")); emp.setAddress((String)document.get("address")); return emp; } }Example XML File To MongoDB Database-
<?xml version="1.0" encoding="UTF-8"?> <employees> <employee> <address>delhi</address> <age>17</age> <empid>1111</empid> <name>ATUL KUMAR</name> <salary>300000.0</salary> </employee> <employee> <address>delhi</address> <age>27</age> <empid>2222</empid> <name>Dinesh Rajput</name> <salary>60000.0</salary> </employee> <employee> <address>delhi</address> <age>21</age> <empid>3333</empid> <name>ASHUTOSH RAJPUT</name> <salary>400000.0</salary> </employee> <employee> <address>Kanpur</address> <age>27</age> <empid>4444</empid> <name>Adesh Verma</name> <salary>80000.0</salary> </employee> <employee> <address>Noida</address> <age>37</age> <empid>5555</empid> <name>Dinesh Rajput</name> <salary>300000.0</salary> </employee> </employees>
<bean id="xmlItemReader" class="org.springframework.batch.item.xml.StaxEventItemReader"> <property name="resource" value="classpath:xml/employees.xml" /> <property name="unmarshaller" ref="empUnMarshaller" /> <property name="fragmentRootElementName" value="employee" /> </bean>
package com.doj.batch.bean; import javax.xml.bind.annotation.XmlAccessOrder; import javax.xml.bind.annotation.XmlAccessorOrder; import javax.xml.bind.annotation.XmlRootElement; /** * @author Dinesh Rajput * */ @XmlRootElement(name="employee") @XmlAccessorOrder(XmlAccessOrder.UNDEFINED) public class Employee { private int empid; private String name; private int age; private float salary; private String address; /** * @return the empid */ public int getEmpid() { return empid; } /** * @param empid the empid to set */ public void setEmpid(int empid) { this.empid = empid; } /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the age */ public int getAge() { return age; } /** * @param age the age to set */ public void setAge(int age) { this.age = age; } /** * @return the salary */ public float getSalary() { return salary; } /** * @param salary the salary to set */ public void setSalary(float salary) { this.salary = salary; } /** * @return the address */ public String getAddress() { return address; } /** * @param address the address to set */ public void setAddress(String address) { this.address = address; } }4. MongoDB configuration
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mongo="http://www.springframework.org/schema/data/mongo" 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-4.0.xsd http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd"> <mongo:mongo host="127.0.0.1" port="27017" /> <mongo:db-factory dbname="davdb" id="mongoDbFactory"/> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" /> </bean> </beans>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" 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-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager"/> <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> <property name="jobRepository" ref="jobRepository"/> </bean> <bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean"> <property name="transactionManager" ref="transactionManager"/> </bean> <bean id="simpleJob" class="org.springframework.batch.core.job.SimpleJob" abstract="true"> <property name="jobRepository" ref="jobRepository" /> </bean> </beans>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:batch="http://www.springframework.org/schema/batch" xmlns:mvc="http://www.springframework.org/schema/mvc" 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-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.0.xsd"> <import resource="applicationContext.xml"/> <import resource="mongodbConfig.xml"/> <bean id="employeeFilterProcessor" class="com.doj.batch.processor.EmployeeFilterProcessor"> <bean id="xmlItemReader" class="org.springframework.batch.item.xml.StaxEventItemReader"> <property name="resource" value="classpath:xml/employees.xml" /> <property name="unmarshaller" ref="empUnMarshaller" /> <property name="fragmentRootElementName" value="employee" /> </bean> <bean id="empUnMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> <property name="classesToBeBound"> <value>com.doj.batch.bean.Employee</value> </property> </bean> <!-- write it to MongoDB, 'employee' collection (table) --> <bean id="mongodbItemWriter" class="org.springframework.batch.item.data.MongoItemWriter"> <property name="template" ref="mongoTemplate" /> <property name="collection" value="employee" /> </bean> <batch:job id="simpleDojJob" parent="simpleJob"> <batch:step id="step1"> <batch:tasklet> <batch:chunk reader="xmlItemReader" processor="employeeFilterProcessor" writer="mongodbItemWriter" commit-interval="2"/> </batch:tasklet> </batch:step> </batch:job> </beans>
package com.doj.batch.processor; import org.springframework.batch.item.ItemProcessor; import com.doj.batch.bean.Employee; /** * @author Dinesh Rajput * */ public class EmployeeFilterProcessor implements ItemProcessor<Employee, Employee> { @Override public Employee process(Employee emp) throws Exception { if(emp.getSalary() > 70000.0){ return emp; }else{ return null; } } }
Labels: Spring Batch