This is a example of field injection, which is very simple. One controller use three different service classes to access data base (DAO service class).
This is annotation based DI, so you don’t need to specify a bean in XML file but you still need to tell annotation drive to servlet context.
<annotation-driven />
<context:component-scan base-package="com.ns.spring" />
Line 42 to 48 shows the field injection, and 65 to 94 use the object without “new” keyword.
package com.ns.spring;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.ns.spring.common.CommonBL;
import com.ns.spring.common.RmaBL;
import com.ns.spring.common.RsnBL;
import com.ns.spring.common.TpBL;
import com.ns.spring.common.TpRsnBL;
import com.ns.spring.common.gen.BLFactory;
import com.ns.spring.constant.RtrnConstant;
import com.ns.spring.model.RTRN_RSN;
import com.ns.spring.model.RTRN_TP;
import com.ns.spring.model.RTRN_TP_RSN_CMBN;
import com.ns.spring.model.ui.RmaHdrModel;
import com.ns.spring.model.ui.RtrnRsnModel;
import com.ns.spring.model.ui.RtrnTpModel;
import com.ns.spring.service.template.RtrnRsnService;
import com.ns.spring.service.template.RtrnTpRsnService;
import com.ns.spring.service.template.RtrnTpService;
@Controller
public class TpRsnController implements RtrnConstant {
@Autowired(required = true)
private RtrnTpService tpSvc;
@Autowired(required = true)
private RtrnRsnService rsnSvc;
@Autowired(required = true)
private RtrnTpRsnService tpRsnSvc;
@RequestMapping(value = "/cUrlValAttrbMain01Jsp", params = "goToTpRsn", method = RequestMethod.POST)
public ModelAndView goToTpRsn(ModelMap model, HttpServletRequest req) {
return getMVSubTpRsn01(model, req);
}
@RequestMapping(value = "/cUrlValAttrbSubTpRsn01Jsp", params = "backToRmaFromTpRsn", method = RequestMethod.POST)
public ModelAndView backToRmaFromTpRsn(Model model, HttpServletRequest req) {
return getMVMain01(req);
}
@RequestMapping(value = "/cUrlValAttrbSubTpRsn01Jsp", params = "toBoundRsnList", method = RequestMethod.POST)
public ModelAndView toBoundRsnList(@ModelAttribute("RtrnTpModel") RtrnTpModel tp, ModelMap model, HttpServletRequest req) {
String tpSelected = (String) req.getSession().getAttribute(CONST.TP_SELECTED.getVal());
if (CommonBL.hasValue(tpSelected)) {
RTRN_TP tpObj = this.tpSvc.findById(tpSelected);
if (tpObj != null) {
List<String> selectedCheckBox = TpRsnBL.getRsnToBound(tp, req);
if (!CommonBL.isEmpty(selectedCheckBox)) {
Set<RTRN_RSN> rtrnRsns = new HashSet<RTRN_RSN>();
for (String code : selectedCheckBox) {
RTRN_RSN rsnObj = this.rsnSvc.findById(code);
if (rsnObj != null) {
rtrnRsns.add(rsnObj);
tpObj.setRtrnRsns(rtrnRsns);
this.tpSvc.saveOrUpdate(tpObj);
}
}
}
}
}
return getMVSubTpRsn01(model, req);
}
@RequestMapping(value = "/cUrlValAttrbSubTpRsn01Jsp", params = "toUnBoundRsnList", method = RequestMethod.POST)
public ModelAndView toUnBoundRsnList(@ModelAttribute("RtrnTpModel") RtrnTpModel tp, ModelMap model, HttpServletRequest req) {
String tpSelected = (String) req.getSession().getAttribute(CONST.TP_SELECTED.getVal());
if (CommonBL.hasValue(tpSelected)) {
List<String> selectedCheckBox = tp.getSelectedCheckBox();
if (!CommonBL.isEmpty(selectedCheckBox)) {
for (String code : selectedCheckBox) {
RTRN_TP_RSN_CMBN tpRsnObj = this.tpRsnSvc.getTpRsnCmbnByHql(tpSelected, code);
if (tpRsnObj != null) {
this.tpRsnSvc.delete(tpRsnObj);
}
}
}
}
return getMVSubTpRsn01(model, req);
}
.
.
.
}