spring 子類覆蓋父類中注入的bean
阿新 • • 發佈:2019-02-08
我們在設計程式框架的時候,會設計一個抽象基類,子類繼承這個基類,共有的方法放到基類中去,使用spring後使程式碼變的很簡單,現在遇到的問題是在基類中注入bean後,子類不可能都會是有這個bean,那麼需要考慮到子類需要覆蓋或者說重新注入個性化的bean
有三種方法來實現這個效果,以下是一種方法,如下面程式碼:
抽象基類:
public abstract class AbstractNameService
{
public abstract String getname();
}
兩個實現類:
@Service("firstNameService") public class FirstNameService extends AbstractNameService { @Override public String getname() { return "FirstName"; } }
@Service("nameService")
public class NameService extends AbstractNameService
{
@Override
public String getname()
{
return "Name";
}
}
另外一個抽象基類:實現類:public abstract class AbstractService { protected AbstractNameService nameService; public String getName() { return nameService.getname(); } public AbstractNameService getService() { return nameService; } <span style="color:#ff9966;">@Resource(name = "nameService")</span> public void setService(AbstractNameService nameService) { this.nameService = nameService; } }
@Service("getNameService")
public class GetNameService extends AbstractService
{
<span style="color:#ff9900;">@Resource(name = "firstNameService")</span>
@Override
public void setService(AbstractNameService nameService)
{
this.nameService = nameService;
}
}
controller:
在applicationContext.xml和springmvc的配置檔案只需要新增一個包<context:component-scan/>標籤就行了@Controller public class UnionpayQuickPayDSMVC { @Resource private AbstractService getNameService; @RequestMapping(value = "/*", method = RequestMethod.GET) public void execute(HttpServletRequest request, HttpServletResponse response) { try { response.getWriter().write(getNameService.getName()); } catch (IOException e) { System.out.println(e); } } }
參考資料:
http://www.faceye.net/search/105626.html