本文主要是介绍spring 子类覆盖父类中注入的bean,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我们在设计程序框架的时候,会设计一个抽象基类,子类继承这个基类,共有的方法放到基类中去,使用spring后使代码变的很简单,现在遇到的问题是在基类中注入bean后,子类不可能都会是有这个bean,那么需要考虑到子类需要覆盖或者说重新注入个性化的bean
有三种方法来实现这个效果,以下是一种方法,如下面代码:
抽象基类:
public abstract class AbstractNameService
{public abstract String getname();
}
两个实现类:
@Service("firstNameService")
public class FirstNameService extends AbstractNameService
{@Overridepublic String getname(){return "FirstName";}}
@Service("nameService")
public class NameService extends AbstractNameService
{@Overridepublic 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>@Overridepublic void setService(AbstractNameService nameService){this.nameService = nameService;}}
controller:
@Controller
public class UnionpayQuickPayDSMVC
{@Resourceprivate 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);}}
}
在applicationContext.xml和springmvc的配置文件只需要添加一个包<context:component-scan/>标签就行了
参考资料:
http://www.faceye.net/search/105626.html
这篇关于spring 子类覆盖父类中注入的bean的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!