1. 程式人生 > >spring 子類覆蓋父類中注入的bean

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