V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hello2090
V2EX  ›  Java

问个 Spring 问题,覆盖 SoapMessageDispatcher

  •  
  •   hello2090 · 2023-06-27 16:45:34 +08:00 · 672 次点击
    这是一个创建于 520 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不是很熟 Spring ,有个问题请教下大家。

    我现在需要重写 Spring-WS SoapMessageDispatcher receive 函数,这样可以定义自己的 log 规则。这个函数其实是他的父类 MessageDispatcher 定义的。

    实现很简单,我只要继承 SoapMessageDispatcher 就可以了,但是 MessageDispatcher 需要你有一个 properties 文件,比如你的类名是 AAA ,他的构造函数会去资源里找 AAA.properties. 刚好我们的项目里面不能有这样的文件,只能有一个 Application.properties.

    解决方法当然有好多种,我就想问问这个可以吗:我在自己的项目里定义 package org.springframework.ws.soap.server. 自己定义一个 SoapMessageDispatcher 类,也就是和 Spring-WS 里的类名是一样的,这样他启动的时候会去 Spring-WS 里面找自带的 SoapMessageDispatcher.properties 。试了一下似乎是不行的,总是 Spring-WS 里面的那个类被拿出来创建 bean 。想问问有啥解决办法吗?谢谢

    Belmode
        1
    Belmode  
       2023-06-27 17:33:24 +08:00   ❤️ 1
    直接在自己的项目里,定义一个 MessageDispatcher ,限定名完全和 SpringWebsocket 中定义的一样,然后重写它的构造器,修改成符合你的要求的,比如写死读取 Application.properties 。然后再继承就好了。

    第一次见不能定义配置文件的项目。
    hello2090
        2
    hello2090  
    OP
       2023-06-27 17:44:49 +08:00
    1. 自定义 MessageDispatcher ,把 Spring-WS 的拷过来,重写构造函数
    2. 自定义 SoapMessageDispatcher, 把 Spring-WS 的拷过来,重写 receive, 把 properties 数据传给新的父类构造函数 (写死都行)


    这肯定是可以的,但是老板嫌这个麻烦。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5912 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:33 · PVG 10:33 · LAX 18:33 · JFK 21:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.