Java 8默认接口方法上的Spring Integration @ServiceActivator
发布时间:2020-12-15 01:31:54 所属栏目:大数据 来源:网络整理
导读:我想在Java 8默认接口方法上使用@ServiceActivator注释.此默认方法将根据业务规则委托此接口的另一个方法. public interface MyServiceInterface { @ServiceActivator public default void onMessageReceived(MyPayload payload) { if(payload.getAction() =
我想在Java 8默认接口方法上使用@ServiceActivator注释.此默认方法将根据业务规则委托此接口的另一个方法.
然后,此接口由Spring @Service类实现:
执行代码时,这不起作用! 我只能从默认方法中删除@ServiceActivator注释,并在我的@Service类中覆盖该默认方法并委托给super方法:
覆盖默认方法会忽略默认方法的用途. 是否有其他方式以干净的方式实现此方案? 最佳答案
这现在不起作用,因为Spring Integration依赖于ReflectionUtils.doWithMethods,它使用ReflectionUtils.getDeclaredMethods,最后一个只执行clazz.getDeclaredMethods(),它不返回接口上的那些默认方法.
随意提出针对Spring Framework的JIRA问题以考虑该选项. 与此同时,除非重写该方法,否则没有其他选择. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |