问题标签 [spring5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1571 浏览

spring-boot - spring boot 无法解析 thymeleaf 模板

我是 Spring 5 和 Spring Boot 的新手。我正在尝试使用 thymeleaf 创建一个 spring 5/spring boot 应用程序。我想制造一场战争,而不是使用带有 Spring Boot 的嵌入式 Web 服务器。

当我部署我的战争时,我的应用程序启动并且我可以访问 src/main/resources/static/ 中的测试 html 页面,其中包含调用我的控制器的 javascript。我可以在这些页面上执行到我的控制器和数据库的往返。

但是,当我尝试打开位于 src/main/resources/templates/testtemplate.html 的 thymeleaf 页面时,我得到了 404

相关行家:

应用:

网络配置:

在 Web 配置中,如果我删除 addResourceHandlers 方法,它不会改变任何内容。我仍然可以在 localhost:8080/ 找到我的静态页面。我尝试将这一行添加到它: registry.addResourceHandler("/**").addResourceLocations("classpath:/templates/");

当我这样做时,我可以在 localhost:8080/mytemplate.html 访问 thymeleaf 模板。但是,它显示为静态页面。片段不翻译。“th”标签似乎被忽略了。

我还尝试从我的 webconfig 中删除 templateResolver、viewResolver 和 templateEngine bean,因为我认为我可能正在覆盖一些自动配置。这没有任何效果。

我相信我的目录结构是相当标准的:

我错过了什么?
我是现代春天的新手。所以我可能会做一些愚蠢的事情。springboot 中的所有这些自动配置都非常令人沮丧,因为我不知道如何调试它在做什么。

0 投票
1 回答
156 浏览

spring-mvc - TestRestTemplate 和 spring 安全性

我正在学习春假。我正在慢慢构建一个应用程序。我使用 TestRestTemplate 进行了完整的集成测试。
但是,我刚刚开始在我的应用程序中添加 Spring Security。从字面上看,只要我添加了 spring 安全依赖项,我的测试就会失败。

我得到这样的错误:

当我调试时,它返回的尝试反序列化的对象为空。如果我在其余控制器上放置一个断点,它甚至不会到达那里。

似乎只是添加依赖项会打开很多默认值。如何在开启安全性的情况下进行测试?1)我可以以某种方式禁用测试的安全性吗?

2)我可以以某种方式不允许凭据或发送可接受的假凭据吗?(我确实看到了@WithMockUser 的示例,但这不适用于TestRestTemplate)

编辑:我尝试向我的测试类添加一个安全实现以启用匿名访问和允许:

这样做的结果是 @GetMapping 工作。我可以追踪到呼叫到达控制器。但是@PostMapping 仍然不起作用。呼叫永远不会到达控制器。帖子调用如下所示:

为什么会得到工作但不发帖???此外,为了确保没有其他问题,我再次删除了 spring-boot-starter-security 依赖项和所有相关代码。突然间一切正常。所以这绝对是安全配置。

0 投票
0 回答
77 浏览

java - Spring Boot V 2.4.0 使用 DaoAuthenticationProvider SHA-512

在 spring 5 + 中,加密类型 SHA-512 已被弃用。在我的 API 项目中,我使用的是 spring 5+,我必须使用 SHA-512,因为数据库是旧类型的密码加密。我的编码器方法需要返回一个自定义类对象,该对象使用用户电子邮件作为盐编码为 SHA-512。我正在使用自定义用户表。知道如何处理这种情况吗?谢谢你们的帮助。我的春季安全课:

0 投票
0 回答
32 浏览

spring - Spring 5:MVC 控制器参数 pageable 未初始化

我有一个这样的控制器:

现在,当我点击这个 API 端点时:

可分页未使用这些值初始化,我看到以下日志。

我已经尝试手动接受页面大小和数量并自己构建可分页,这似乎工作得很好,但我的控制器中的可分页参数似乎没有被初始化。我不知道为什么。

我已经看过这个线程,但它对我不起作用。

0 投票
0 回答
31 浏览

validation - RequestBody 和 Validation Annotation 为空

我在 RestController 中做了一个方法。此方法接受 json 对象,并将其输入数据库并返回状态。

将其放入数据库中效果很好。

但是,当我使用 Advance REST 客户端程序检查时,状态是201 supported media type,而不是201 created

在控制台窗口中,出现如下错误。

RequestBody 和 Validation 为空,不能正常使用。

导入的时候没有报错,这条线没有红线。我应该怎么办?

下面是 pom.xml。

0 投票
1 回答
47 浏览

placeholder - Spring Test 中的@ActiveProfiles 不再支持占位符

@ActiveProviles我正在从 Spring 4.3 升级到 Spring 5.3,并且注释似乎不再支持占位符。

以下代码适用于旧的 Spring 版本:

但它停止了升级工作,现在它得到了

请注意,“nucleus.hibernate.dialect”是在“${profileA}”引用的应用程序属性中定义的。

作为一种解决方法,我尝试使用显式将属性指定为测试属性源

那行得通。

我不确定在 Spring 集成测试中使用占位符选择 Spring 配置文件是否是官方支持的功能。如果是,我认为这是 Spring 测试框架中的重大变化。

0 投票
0 回答
174 浏览

java - 如何从 Spring 5 WebClient 调用中获取响应/请求正文(json)

我正在尝试使用 Spring 5 WebClient 接收请求/响应正文。你知道我怎么能做到这一点吗?

我找到了一个主题 -如何记录 Spring 5 WebClient 调用,但我正在询问是否获取身体 - 我需要它将 json 保存到数据库中。

代码现在看起来像这样,但它不起作用:

0 投票
3 回答
572 浏览

spring - 从 Spring 4 升级到 Spring 5 - NoClassDefFoundError: org/springframework/core/JdkVersion

我正在将我的 Spring 项目从 4.3.23 版升级到 5.2.13 版

我在项目的 ldap.xml 文件中有以下代码,该代码在 4.3.23 中运行良好,但在 5.2.13 中出错:

但是在运行我得到的代码时java.lang.NoClassDefFoundError: org/springframework/core/JdkVersion

经过搜索,我发现 JdkVersion 在 Spring 5.x 中被删除

我想知道如何修复我的代码以在 Spring 5.x 中正常工作。

这是错误的完整堆栈跟踪:

提前致谢!

0 投票
1 回答
101 浏览

spring-transactions - Spring事务管理中的“无法获得当前线程的事务同步会话”错误

我正在将应用程序从 Spring 3.2 迁移到 Spring 5。该应用程序使用 AWS RDS,主数据库作为主数据源或主数据源,副本数据库作为只读数据源。应用程序为主要数据源创建一个会话工厂 (primarySessionFacotry) 实例,为只读数据源创建另一个 (readOnlySessionFactory) 实例,以便通过连接每个会话工厂,可以将相同的 DAO 用于两个数据源。

appContext-hibernate.xml

appContext-hibernate-ro.xml

DAO 是这样实例化的

这个 UserDao 有一个类似下面的方法

当使用带有 readOnlyUserDao 实例的 UserDao.getItems() 方法时,我们遇到了异常。

请注意,相同的代码与 Spring 完美配合(spring-orm 和 spring-tx 3.2)

请协助解决此问题。

0 投票
1 回答
145 浏览

java - 使用 Java 16 时 Tomcat 未找到 Spring 初始化程序类

我有一个非常简单的 Gradle ( 7.0-rc-1) 脚本来使用嵌入式 Tomcat 实例初始化单个 Spring 5“hello world”端点。原始代码取自我在互联网上找到的一个随机示例。我的示例 Gradle 项目可以在这里找到。

我不确定它是如何工作的,但是 Web 服务器以某种方式知道WebApplicationInitializer.onStartup(ServletContext)在启动时调用该方法,以便初始化 Spring。

这在 Java 8 上可以正常工作;但是当我将 Gradle 构建定义中的以下工具链规范更改为 Java 16 时失败。

使用 Java 8 时,Spring 已正确初始化并且端点可以正常工作。

使用 Java 16 时,onStartup()不会调用该方法,因此 Spring 没有初始化并且端点不起作用(尽管 Tomcat 仍然启动并响应错误)。

日志显示一条​​消息,但没有堆栈跟踪:

我需要做什么才能在 Java 16 上进行这项工作?

注意我不想用spring-boot,请不要推荐。