This is an example of Setter injection, which is most popular method compared to field and constructor injection. A business logic class uses a object of 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" />
As the line 20 to 24 shows, it will injects the dependency via a setter method. And 28 to 39 shows it usage.
package com.ns.spring.common; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.ns.spring.constant.RtrnConstant; import com.ns.spring.model.RMA_HDR; import com.ns.spring.model.ui.RmaHdrModel; import com.ns.spring.service.template.RmaHdrService; @Component public class RmaBL implements RtrnConstant { private static RmaHdrService hdrSvc; @Autowired(required = true) public void setHdrSvc(RmaHdrService hdrSvc) { this.hdrSvc = hdrSvc; } public static List<Object[]> getRmaHdrListObj(String rmaNum) { return hdrSvc.getListRmaHdrBySql(rmaNum); } public static RMA_HDR saveHdr(RmaHdrModel rma, HttpServletRequest req) { RMA_HDR obj = new RMA_HDR(rma); if (rma.getId() == 0) { hdrSvc.save(obj); // Set RMA# with formatted DecimalFormat df = new DecimalFormat("000000"); obj.setRmaNum("RMA" + df.format((double) obj.getId())); } hdrSvc.update(obj); req.getSession().removeAttribute(CONST.HDR_LIST.getVal()); return obj; } public static RMA_HDR getRmaHdrObj(String rmaNum) { List<Object[]> rmaHdrList = getRmaHdrListObj(rmaNum); if (!CommonBL.isEmpty(rmaHdrList)) { Object[] objArr = rmaHdrList.get(0); int id = (Integer) objArr[0]; return hdrSvc.findById(id); } return null; } . . . }