问个 Spring 问题,覆盖 SoapMessageDispatcher

2023-06-27 16:45:34 +08:00
 hello2090

不是很熟 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 。想问问有啥解决办法吗?谢谢

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

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


这肯定是可以的,但是老板嫌这个麻烦。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/952128

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX