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

发布于 2022-09-07 08:31:49 字数 1802 浏览 31 评论 0

背景

为了兼容多种业务,想在项目中使用一些设计模式,以便于管理。
例如,我需要创建用户并返回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的情况下,这样是不是会失效?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

错々过的事 2022-09-14 08:31:49

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

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

Hello爱情风 2022-09-14 08:31:49

模式问题

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

为什么 spring绑定不成功

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文