为了账号安全,请及时绑定邮箱和手机立即绑定

SpringMVC项目里,有必要使用一些设计模式吗?

SpringMVC项目里,有必要使用一些设计模式吗?

幕布斯7119047 2019-01-19 04:36:46
背景 为了兼容多种业务,想在项目中使用一些设计模式,以便于管理。例如,我需要创建用户并返回userid,每种业务创建的方式都不一样。我选取了“适配器模式”,但是我发现,在springmvc的管理下,常常需要new一些类,这时候,在这个类里的一些spring标签,却失效了。以下是我创建用户的代码: 接口 public interface IPlatformSendPay { public abstract Object sendPayInA(Object object); public abstract Object sendPayInB(Object object); } 父类 public class PlatformSendPay { private Object obj; @Resource private OpenPaymentDao openPaymentDao; public PlatformSendPay(Object obj) { this.obj = obj; } public Object getUserIdInA(){ JidouOrderData jidouOrderData = (JidouOrderData) obj; int stationId = jidouOrderData.getStation_id(); //此处,openPaymentDao为空,意味着@Resource失效,这个PlatformSendPay类没有纳入spring管理中 Integer userId = openPaymentDao.getIdentifyUser(jidouOrderData.getIdentifyId(), "1000000013"); if (ObjectUtils.isEmpty(userId)){ //todo:打印 } return userId; } } 子类 public class SendPay extends PlatformSendPay implements IPlatformSendPay{ public SendPay(Object obj) { super(obj); } @Override public Object sendPayInA(Object object) { return getUserIdInA(); } @Override public Object sendPayInB(Object object) { return getUserIdInB(); } } 这是我的实现类,springmvc中的@Service标签 //业务一 SendPay sendPay = new SendPay(jidouOrderData); int userId = (int) sendPay.getUserIdInA(); //业务二 SendPay sendPay = new SendPay(JdOrderData); int userId = (int) sendPay.getUserIdInB(); 疑问 1.PlatformSendPay 为何spring绑定不成功?如何才能绑定成功?2.springmvc里,是不是尽可能少使用这类的设计模式?在对象里面的方法,使用的变量有spring标签,但是在new的情况下,这样是不是会失效?
查看完整描述

2 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

例如,我需要创建用户并返回userid,每种业务创建的方式都不一样。

这不是典型的工厂模式嘛?输出是一致的,返回userid,创建过程根据业务来。简单工厂就可以了。

查看完整回答
反对 回复 2019-02-12
?
慕沐林林

TA贡献2016条经验 获得超9个赞

模式问题

所谓设计模式是对常见对象关系的总结,实际上包含了同几乎所有可能的常见对象的创建和使用关系。如果你能成功地绕过所有设计模式写出程序来,那才是真的了不起。实际上这是一个自然的过程,不需要为模式而模式。

为什么 spring绑定不成功

自动装配情况下,对手工new出的对象是没法装配的, 因为spring自动装配仅发生在初始化扫描阶段。你的情况下建议采用对象继承的方式,由不同子对象实现不同的逻辑,而不是同一个对象因为构造参数不同而产生不同的逻辑。

查看完整回答
反对 回复 2019-02-12
  • 2 回答
  • 0 关注
  • 1197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信