我在编写SpringMVC的Controller时遇到的注解继承问题

我的Controller构成如下:

先有一个IController接口定义所有需要的方法,这里仅举例增删改查:

public interface IController<T> {
	//初始化
	public void init();
	//添加
	public String save(T obj);
	//查询
	public String list(T obj);
	//修改
	public String change(T obj);
	//删除
	public String abandon(T obj);
}


然后建立一个抽象类继承这个接口:

public abstract class CRUDController<T> implements IController<T> {

	protected IService<T> service;
	//添加
	@Override
	public String save(T obj) {
		ResultMsg msg = new ResultMsg();
		try {
			service.init();
			msg = service.add(obj);
			if(msg.getError_code() == Constantnumber.EXITS) {
				msg.setResult("Already exists...");
			} else if(msg.getError_code() == Constantnumber.SUCCESSED) {
				msg.setResult(obj.toString());
			} else {
				msg.setResult("Operation failed...");
			}
		} catch (Exception e) {
			msg.setError_code(Constantnumber.FAILED);
			msg.setResult("Operation failed...");
		}
		return msg.toString();
	}
	//查询
	@Override
	public String list(T obj) {
		ResultMsg msg = new ResultMsg();
		List<T> objs = null;
		try {
			service.init();
			objs = service.find(obj);
			if(msg.getError_code() == Constantnumber.ILLEGALITY) {
				msg.setResult("Operation illegality...");
			} else if(objs.size() > 0) {
				msg.setError_code(Constantnumber.SUCCESSED);
				msg.setResult(objs.toString());
			}
		} catch (Exception e) {
			msg.setError_code(Constantnumber.FAILED);
			msg.setResult("Operation failed...");
		}
		return msg.toString();
	}
	//修改
	@Override
	public String change(T obj) {
		ResultMsg msg = new ResultMsg();
		try {
			service.init();
			msg = service.modify(obj);
			if(msg.getError_code() == Constantnumber.ILLEGALITY) {
				msg.setResult("Operation illegality...");
			} else if(msg.getError_code() == Constantnumber.SUCCESSED) {
				msg.setResult(obj.toString());
			} else {
				msg.setResult("Operation failed...");
			}
		} catch (Exception e) {
			msg.setError_code(Constantnumber.FAILED);
			msg.setResult("Operation failed...");
		}
		return msg.toString();
	}
	//删除
	@Override
	public String abandon(T obj) {
		ResultMsg msg = new ResultMsg();
		try {
			service.init();
			msg = service.remove(obj);
			if(msg.getError_code() == Constantnumber.ILLEGALITY) {
				msg.setResult("Operation illegality...");
			} else if(msg.getError_code() == Constantnumber.SUCCESSED) {
				msg.setResult("Operation successed...");
			} else {
				msg.setResult("Operation failed...");
			}
		} catch (Exception e) {
			msg.setError_code(Constantnumber.FAILED);
			msg.setResult("Operation failed...");
		}
		return msg.toString();
	}


这样,当我开始编写所有具体的功能时都可以继承这个CRUDController,如:

@Controller
@RequestMapping("/roless")
public class RolessInfoController extends CRUDController<RolessInfo> {
	@Resource
	private IRolessInfoService service;
	
	@Override
	public void init() {
		super.service = service;
		
	}
}


现在遇到的问题是,这种方式的写法还没有找到使用注解标注用户的访问路径的办法

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值