【问题标题】:Why does Spring Security Core RC4 require Grails 2.3?为什么 Spring Security Core RC4 需要 Grails 2.3?
【发布时间】:2014-10-12 18:09:44
【问题描述】:
在 Spring Security Core 插件 GitHub 存储库上,我看到 Graeme 在 5 月 21 日 upped the required version 的 Grails 从 2.0 到 2.3,然后在几个月后发布 RC4 版本,但我没有看到任何解释为什么.是不匹配的依赖项、错误报告等吗?
我运行一个 2.2.4 的应用程序,我不希望在这一点上升级,只是为了获得最新的 Spring 安全核心 RC。我了解 upgrade to 3.2.0.RELEASE of spring security 是否导致与旧版本 Grails 的依赖关系不匹配,因为我之前遇到过同样的问题。
这最初是由于我维护的 spring security OAuth2 提供程序插件上的 pull request 而出现的。拉取请求将所需版本提高到 2.3,请求者指出我是核心的 RC4 版本。
感谢一如既往的好作品!
【问题讨论】:
标签:
grails
spring-security
grails-plugin
【解决方案1】:
这纯粹是我的猜测,但据我所知,它与 Grails 2.3 中 UrlMappingInfo 接口中引入的 getNamespace() 方法有关。
Spring Security Core 插件的类 AnnotationFilterInvocationDefinition 在尝试调用 getNamespace() 之前会检查它是否在处理 Grails 2.3 或更高版本,但在当前状态下它会导致编译错误(由于缺少方法)。
我想这个类可以求助于使用反射 API 来解决这个问题,从而可以降低对 Grails 2.2.0 的要求(或保持在 2.0.0)
String namespace = null;
try {
Method m = mapping.getClass().getDeclaredMethod("getNamespace", null);
namespace = (String)m.invoke();
} catch(NoSuchMethodException e) { ... }