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;
	}

	@Resource(name = "nameService")
	public void setService(AbstractNameService nameService)
	{
		this.nameService = nameService;
	}

}
实现类:
@Service("getNameService")
public class GetNameService extends AbstractService
{

	@Resource(name = "firstNameService")
	@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的配置文件只需要添加一个包标签就行了
参考资料:

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

你可能感兴趣的:(Java)