问题标签 [spring-autoconfiguration]

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

spring-boot - spring.jackson.default-property-inclusion 被忽略

在我的 Spring Boot/Kotlin 项目中,我试图让 JSON 转换器忽略我的休息控制器响应中的空值。

我尝试在我的 application.yml 中设置以下内容:

我也尝试过提供一个@Bean类型Jackson2ObjectMapperBuilder并进行@ObjectMapper配置,.serializationInclusion(JsonInclude.Include.NON_NULL)但它仍在序列化所有空属性。

使用 Spring Boot 2.3.0、Kotlin 1.3.72、AdoptOpenJDK 13

0 投票
1 回答
1061 浏览

spring-boot - 如何在模块的 Spring Boot 配置类中使用 @AutoConfigureOrder

在我的 Spring Boot 项目中,我使用了一个模块,它提供了一个@Configuration类。配置是通过类中导入@Import(ConfigurationFromModule.class)Application

来自模块的配置需要在某个AutoConfiguration. 不幸的是,定义配置顺序的注释似乎在模块类中被忽略了。

我用 注释了配置@AutoConfigureBefore({SomeBuildInAutoConfiguration.class}),但之前仍然SomeBuildInAutoConfiguration被触发ConfigurationFromModule

出于好奇,我尝试ConfigurationFromModule@AutoConfigureOrder(1)and进行注释,@Primary但它们并没有改变任何东西。

对于@Configuration主应用程序中的类,所有这些注释都按预期工作。

如何在模块中定义 AutoConfiguration 的顺序?

0 投票
2 回答
1319 浏览

java - 在 Spring Boot Camel 应用程序中配置线程池配置文件

我们正在对我们的一个应用程序进行现代化改造,我们决定将 Spring Boot 与 Apache Camel 一起使用。

旧版本的配置文件之一是这样的:

我在这个链接上的骆驼文档中看到的是,有可能配置与旧版本中基本相同的东西。但后来我被困在了id球场上。它不见了,但有一个属性camel.threadpool.config,解释听起来是我需要的(为特定的线程池配置文件添加配置(继承默认值)),但到目前为止,我一直在努力使用它。我试过这样的事情:

我收到以下错误:

我想我不明白这个 Spring Boot 配置是如何工作的。

0 投票
1 回答
606 浏览

spring - Spring boot删除代码中添加的logback appender(自动配置)

我想要添加 LogstashTcpSocketAppender 的 spring 自动配置。

我做了什么:

  1. LogstashTcpSocketAppender 从 LogstashAutoConfiguration.java 添加到 LoggerContext
  1. 一段时间后,Spring Boot 触发一个事件将使应用程序重新配置。(例如,我使用 Consul,所以我只需更改键/值存储中的属性,然后刷新我的上下文)
  2. 它调用 AbstractLoggingSystem.java 中的 initializeWithConventions
  3. 然后它会调用 LogbackLoggingSystem.java 中的 loadConfiguration
  4. 然后它将停止AndReset(loggerContext)。在这里它会停止所有的appender,它会resetAllListeners();,这将清除所有的logback监听器。(所以我不能再次使用 logback 侦听器来添加附加程序)

是否有正确的方法通过 spring 自动配置添加 Appender?spring 重新配置应用程序时,如何防止从 LoggerContext 中删除 LogstashTcpSocketAppender?

0 投票
1 回答
817 浏览

spring-boot - 为什么我不能对我的自动配置进行组件扫描?

Spring Boot 的文档中明确指出必须通过spring.factories文件指定自动配置:

自动配置只能以这种方式加载。确保它们是在特定的包空间中定义的,并且它们永远不是组件扫描的目标。

我确实尝试@Component在我的自动配置类上添加一个,并确保它会被组件扫描拾取。它似乎工作。

虽然我确实认为这是不好的做法,因为组件扫描不太可能在现实世界的场景中真正找到它,但我想知道为什么文档对此有如此强烈的感觉。是否还有其他我没有预料到的危险,如果有,是哪一个?

编辑:在https://youtu.be/jDchAEHIht0?t=734 Stéphane 和 Brian 解释说有两个阶段,一个称为“用户配置阶段”,另一个称为“自动配置阶段”。按照这种想法,@ComponentScan在自动配置类上使用会将其移至“用户配置阶段”,这基本上会破坏自动配置的语义。

但是,我无法在我的实验中打破它。只要我保留我的@Conditional注释,它似乎就可以按预期工作......

0 投票
0 回答
181 浏览

java - Springboot 自动配置 @ConditionalOnClass TypeNotPresentExceptionProxy

尝试学习 Springboot 自动配置。

我使用自动配置类创建了以下模块,所示的想法是,migrationAutoConfigBeanCreated如果调用者应用程序在 claspath 中有 Flyway 库,则将创建 bean:

它工作正常,当调用者模块的类路径中有 Flyway 库时,会显示调试日志。

问题是当我尝试将 @ConditionalOnClass 仅应用于 bean 而不是整个 Configuration 类时,如下所示:

我在午餐时遇到了这个错误:

我不明白为什么。

有我的两个模块 poms:

自动配置pom:

调用者模块:

0 投票
1 回答
211 浏览

spring - Spring Boot - @Value 在 @Component 类中返回 null

这是一个简单的类,我试图用@value 映射错误消息。

我没有在属性文件中添加相应的值,因为我设置了默认值

这里抛出新的 UnAuthorisedRequestException(invalidPassword); 返回空

不确定该类有什么问题,因为它被标记为@Component

此类被添加为异常处理程序

0 投票
1 回答
392 浏览

spring-boot - @AutoConfigureMockMvc 如何设置消息转换器

使用@AutoConfigureMockMvc时如何指定消息转换器?

考虑以下示例:

如果我使用普通的mockMvc而不是customMvc则会出现以下异常,因为MappingJackson2HttpMessageConverter未注册:

如果我使用customMvc,那么测试是绿色的。所以我需要以某种方式将 MappingJackson2HttpMessageConverter 应用于mockMvc 我不知道如何。

请指教

0 投票
0 回答
150 浏览

java - 从 Spring Boot 2.1.7 升级到 2.2.0 后,由于 FailureAnalyzer,应用程序无法启动

我正在开发一个基于 Spring Boot 的项目,到目前为止我使用的是 2.1.7。当我开始使用 HateOas 部分时,我决定使用更新的 HATEOAS 1.0,因此我升级了我的应用程序,以便使用 Spring Boot 2.2.0。

我对应用程序所做的唯一更改是:

  1. 在应用的父pom中更改Spring Boot的版本(Spring Boot为父)
  2. 通过运行 hateoas 团队提供的脚本来适应 HATEOAS 1.0 中的变化。

之后,所有构建问题都消失了,但是我不能再让我的应用程序再次启动,因为它失败了,因为某个 jdbc 类不在类路径中:

20:22:04.219 调试 org.springframework.boot.diagnostics.FailureAnalyzers - FailureAnalyzer org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer@2f254559 失败

环境:

  • Eclipse STS 4(版本:4.6.0.RELEASE,内部版本 ID:202003181317)
  • VM-ubuntu18-ES2698:~/celsvs/celsvs-webapp$ java -version openjdk 版本 "11.0.6" 2020-01-14 OpenJDK 运行时环境 (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1) OpenJDK 64 -Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1, 混合模式)
  • VM-ubuntu18-ES2698:~/celsvs/celsvs-webapp$ mvn -version Apache Maven 3.6.0 Maven 主页:/usr/share/maven Java 版本:11.0.6,供应商:Ubuntu,运行时:/usr/lib/jvm /java-11-openjdk-amd64 默认语言环境:en_US,平台编码:UTF-8 操作系统名称:“linux”,版本:“5.3.0-46-generic”,arch:“amd64”,家族:“unix”

我在 github 的特定分支中进行了所有更改。如果有人想嗅探,请随时克隆 repo:https ://github.com/asjp1970/celsvs.git并跟踪分支https://github.com/asjp1970/celsvs/tree/celsvs_0-1- 0_uplift-spring-2.2.0

0 投票
0 回答
841 浏览

java - SpringBoot - 将 Bean 注册为 Rest Controller

我正在使用 Spring Boot AutoConfiguration 来注册 bean。需要找到一种方法,通过它我可以将通过 Auto-Configuration 配置的 bean 注册为 Rest Controller

SampleController.java

SampleControllerAutoConfiguration.java

我无法注释SampleController@RestController因为它与导入它的父项目在同一个包中,因此由于组件扫描而自动配置