spring 子类覆盖父类中注入的bean

我们在设计程序框架的时候,会设计一个抽象基类,子类继承这个基类,共有的方法放到基类中去,使用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:

@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);
		}
	}
}
在applicationContext.xml和springmvc的配置文件只需要添加一个包<context:component-scan/>标签就行了
参考资料:

http://www.faceye.net/search/105626.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值