【发布时间】:2022-11-19 11:57:45
【问题描述】:
我正在尝试将在 Spring boot 1.3.5-Release 上运行的 Web 应用程序升级到 2.7.1。这样做的最终目标是在我的网络应用程序中实施 OIDC 身份验证。
以下是当前使用的版本
<spring.boot.version>1.3.5.RELEASE</spring.boot.version>
<spring.version>4.1.3.RELEASE</spring.version>
<spring.integration.version>4.1.3.RELEASE</spring.integration.version>
<org.hibernate.version>4.3.10.Final</org.hibernate.version>
<aspectj.version>1.8.7</aspectj.version>
要实现 OIDC 身份验证,我应该使用 OAuth2 客户端依赖项。要使用此依赖项,我需要使用 Spring Security 版本 5.x.x(我猜是这样 - 请纠正我)。使用这些较低版本,我如何实现我想要的东西?
我只是尝试通过解决一些多个构建问题将 Spring boot 升级到 2.7.1。但最后在运行应用程序时出现以下错误。
2022-10-26 21:26:31.251 INFO 14788 --- [main] o.s.core.annotation.MergedAnnotation:无法内省公共 org.springframework.transaction.PlatformTransactionManager org.springframework.boot.autoconfigure.orm.jpa 上的注释。 JpaBaseConfiguration.transactionManager(org.springframework.beans.factory.ObjectProvider):java.lang.ArrayStoreException:sun.reflect.annotation.TypeNotPresentExceptionProxy
我在这里错过了什么?实现 OIDC Auth 需要使用的 Spring 和 Springboot 的最低版本是多少?
【问题讨论】:
-
删除对 Spring、Spring Integration、Hibernate 和 AspectJ 的管理,并使用 Spring Boot 提供的版本。您正在处理 Spring Boot 启动器/管理,这将导致类路径上的版本不兼容,从而导致各种有趣的问题。
-
@M.Deinum - “使用 Spring Boot 提供的版本。” >> 你建议使用 springboot starter parent 吗??或者如何使用获取那些版本??这基本上是一个具有“spring-boot”、“spring-boot-autoconfigure”、“spring-boot-starter-test”、“spring-boot-starter-jersey”、“spring-boot-starter-”的遗留网络应用程序web”、“spring-boot-starter-jetty”、“spring-orm”、hibernate 和其他依赖项分别包含..!!
-
那还是用依赖管理的方式吧。手动引入这些依赖项的问题是您最终会遇到冲突或不兼容的版本,从而导致奇怪的问题。如果它是遗留的,为什么要使用 Spring Boot? web 和 jersey 在那里的事实可能已经意味着有一个
@SpringBootAPplication注释,因此它是一个 Spring Boot 项目(从它是一个真正的遗留应用程序的时间迁移,但迁移完成了一半)。
标签: java spring spring-boot openid-connect spring-security-oauth2