问题标签 [spring2.x]

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 回答
4934 浏览

spring - 从 1.5 升级后 Spring boot 2 @Query 命名参数绑定值解析搞砸了

我们使用 SpringBoot 1.5 有以下工作查询:

请注意我们如何将输入传递给 LIKE:CONCAT('%', :searchString, '%')

从升级springBootVersion = '1.5.17.RELEASE'springBootVersion = '2.1.3.RELEASE'(我们使用 Gradle)后,该查询将在运行时失败并出现异常:

org.hibernate.QueryException:未绑定命名参数:includeDeleted

替换CONCAT('%', :searchString, '%')%:searchString%解决问题。

我的问题是:为什么?

通过进入调试模式并遵循完整的调用堆栈,我可以看到从方法调用中正确检索到的参数,如JdkDynamicAopProxy在第 205 行中观察到的那样,调用Object[] argsToUse = AopProxyUtils.adaptArgumentsIfNecessary(method, args);导致:

到目前为止,一切都很好。然后,我们继续,调用的方法也正确解析:

然后我们走得更远,我们到达RepositoryFactorySupport第 599 行调用private Object doInvoke(MethodInvocation invocation) throws Throwable,它使用private final Map<Method, RepositoryQuery> queries;内部类public class QueryExecutorMethodInterceptor implements MethodInterceptor(我不确定这个变量是何时/如何创建和填充的),其中包含@Query在我的存储库接口中注释的所有查询。

对于我们的特定情况,它包含一个与我正在调用的查询(findCustomers )匹配的条目(最后一个):

并扩展该条目,我可以看到错误来自哪里,:includeDeleted命名参数的绑定根本不存在:

现在,我有前面提到的修复程序,但我仍然非常想知道以下内容以供将来参考:

  1. 何时以及如何private final Map<Method, RepositoryQuery> queries创建和填充变量?
  2. 究竟是什么导致了这个错误?我在升级过程中错过了什么吗?我是否在使用/混合不推荐使用的逻辑/错误的逻辑并且应该进一步更改代码?

我们的数据库是 MariaDB 10.1.36

编辑:在所有发生此行为的地方(在某些地方仍然发生),未绑定参数始终是最后一个

EDIT2:别人升级后也有类似的行为,为什么会这样?参考

EDIT3:参考和这种奇怪的行为也被报道了。有趣的是,如果我将已经连接的输入传递给 :searchString(例如:%SOMETHING%),我不会得到异常,如果我离开 %:searchString% 会得到异常。是的,最终移动这些参数可以解决我在绑定时遇到的一些错误。

EDIT4:也许相关的错误

显然发生了一些奇怪的事情,所以:这个绑定解决方案究竟是如何发生的

提前致谢,祝您有美好的一天

0 投票
1 回答
792 浏览

java - Spring Boot MVC - 如何在 application.properties 中配置多视图目录

我正在尝试使用 Spring MVC Boot 应用程序,目前正在使用 springBootVersion = '2.1.6.RELEASE'。

我有数百个“.jsp”文件放置在多个子目录中,这些子目录位于我的 Web 应用程序的“视图”目录中,我正在尝试查看如何在 application.properties 文件中定义属性以搜索 jsp 文件在所有子目录中,而不仅仅是查看目录。

目前,只有当它们位于子文件夹之外,即“view”文件夹中时,应用程序才能找到 jsp 页面。

下面是我的项目目录结构和 application.properties 文件的截图。

在此处输入图像描述

每个目录(例如be、ca、de、fr)都有自己的jsp页面、图片、css、js等。

我已尝试使用以下 3 个属性值,但它不起作用 -

请告知是否有办法在所有子目录中搜索 jsp 文件。

0 投票
1 回答
149 浏览

spring-boot - 自 spring-boot-starter-parent 2.1.12-RELEASE 以来,在 eclipse 中运行时,使用 jetty 的 Spring Boot 服务器默认不会转发到 index.html

更新:此问题存在于 9.4.25.v20191220 的码头中,我已将版本设置回它正确服务的 9.4.24。我不知道这是错误还是配置更改。

也许有人可以提供帮助,我很欣赏这是所有配置问题,但我只有将 spring-boot-starter-parent 从 2.1.10-RELEASE 升级到 2.1.13-RELEASE 时遇到这个问题。

使用 @SpringBootApplication 和其他所有默认设置,但以下 WebMvcConfigurer 除外(在此处的另一篇文章中找到)

使用 Jetty,并且在 \src\resources\public\ 中存在一个 Angular 项目,包括公共目录中的 index.html。

在之前的春季版本中,我可以导航到 localhost:8080,它会自动定向到 localhost:8080/list,这被设置为 Angular 项目索引文件中的重定向。

但是现在使用 2.1.13 我必须明确地转到 localhost:8080/index.html 这确实有效,重定向到 /list 并且我可以浏览网站,但是如果我刷新页面或者如果我明确地转到 :8080/list我得到白标签错误 500

我试过了:

1.

添加各种其他视图控制器规则:

registry.addViewController("/").setViewName("forward:/index.html"); registry.addViewController("/").setViewName("forward:index.html"); registry.addViewController("/**").setViewName("forward:index.html");

......但我不认为这些是问题。

2.

查看 ResourceHandlerRegistry 以查看默认资源位置,因此它应该选择我的 index.html 文件。

3.

添加 spring.resources.static-locations=classpath:/public/xxx/**

然后我去 localhost:8080/xxx/ 或 localhost:8080/xxx/index.html whitelabel 404

由于安全漏洞,我升级了 spring,所以目前很想回到 2.1.10 或 11,并且只提取缓解漏洞所需的依赖版本。我只是想知道出了什么问题,显然不喜欢被打败。

有谁知道是否有春季版本的变更日志可以揭示发生了什么变化?我想这可能是由于任何数量的依赖项目。

0 投票
0 回答
28 浏览

spring-boot - 使用 spring 2 和 jersey 的 rest 服务,无法得到一些消费者的响应

我们有一个使用异步响应并将数据写入流的应用程序。

我从 1.5 升级到 spring2。并且不确定它是否可以关联,但现在使用邮递员我收到此错误“文件意外结束”。

即使在 java 客户端中,我也会收到错误“java.IO.EOFException: Unexpected end of zlib input stream”。

但是我在 curl 命令中得到了预期的结果。

现在我怀疑,这可能与 user-agent 或 spring2 或 jersey 中的某处有关,我需要设置一些属性来摆脱它。

没有安全性,我排除了 SecurityAutoConfiguration.java,以防它在某处检查某些用户代理。

由于我在 java 客户端中看到的错误,我尝试使用 server.compression.enabled=false (无论如何都是默认设置),但没有运气。

我想我需要编辑问题。使用 spring2x 的 StreamingOutput 似乎存在一些问题。这不是流式传输,我认为会导致上述所有问题。

任何帮助表示赞赏。

0 投票
3 回答
487 浏览

spring - 尝试将 JSON 发布到方法最终会出现此错误 - 所需的字符串参数“名称”不存在

我知道在找不到完全相同的问题之前会问这个问题,而且我是弹簧技术的新手,所以请温柔

我正在尝试使用邮递员发布一个对象,该对象应该添加到我的数据库中

对象构造函数看起来像这样

映射功能是这个

SetProduct 是我用来将对象添加到我的数据库调试器的一个函数,它没有达到该语句。这就是我发布我的 JSON 对象所做的事情

标题

JSON

以下是错误信息

我尝试将功能更改为此并尝试了其他一些组合

除了错误消息之外没有任何变化

我不是在寻找便宜的解决方案,而是在尝试了解原因。如果有人愿意帮助我可以提供更多细节

0 投票
0 回答
595 浏览

spring - 升级到 Spring Boot 版本 2.3.1.Release 后应用程序无法启动

我正在使用spring boot 2.3.1.RELEASEspring-cloud-services.version 2.0.0.RC2和spring-cloud.version Hoxton.M1,并在启动应用程序时遇到以下问题:

升级到spring boot 2.3.8.RELEASE和 s pring cloud 到 Hoxton.SR9 后,我收到以下异常:

0 投票
0 回答
78 浏览

netflix-zuul - 升级到 Spring 2.5.X 时 Zuul 和 Spring Cloud 网关的替代方法

我们正在将我们的项目升级到 Spring 2.5.X,它不再支持 Zuul 网关。我们不想选择“Spring Cloud Gateway”,因为我们需要在 Reactive 中重写所有代码(我们基于 Servlet)。除了 Zuul 和 Spring Cloud Gateway 之外,还有没有其他好的方法来实现网关路由和过滤?欢迎任何建议。先感谢您。