问题标签 [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.
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
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 的顺序?
java - 在 Spring Boot Camel 应用程序中配置线程池配置文件
我们正在对我们的一个应用程序进行现代化改造,我们决定将 Spring Boot 与 Apache Camel 一起使用。
旧版本的配置文件之一是这样的:
我在这个链接上的骆驼文档中看到的是,有可能配置与旧版本中基本相同的东西。但后来我被困在了id
球场上。它不见了,但有一个属性camel.threadpool.config
,解释听起来是我需要的(为特定的线程池配置文件添加配置(继承默认值)),但到目前为止,我一直在努力使用它。我试过这样的事情:
我收到以下错误:
我想我不明白这个 Spring Boot 配置是如何工作的。
spring - Spring boot删除代码中添加的logback appender(自动配置)
我想要添加 LogstashTcpSocketAppender 的 spring 自动配置。
我做了什么:
- LogstashTcpSocketAppender 从 LogstashAutoConfiguration.java 添加到 LoggerContext
- 一段时间后,Spring Boot 触发一个事件将使应用程序重新配置。(例如,我使用 Consul,所以我只需更改键/值存储中的属性,然后刷新我的上下文)
- 它调用 AbstractLoggingSystem.java 中的 initializeWithConventions
- 然后它会调用 LogbackLoggingSystem.java 中的 loadConfiguration
- 然后它将停止AndReset(loggerContext)。在这里它会停止所有的appender,它会resetAllListeners();,这将清除所有的logback监听器。(所以我不能再次使用 logback 侦听器来添加附加程序)
是否有正确的方法通过 spring 自动配置添加 Appender?spring 重新配置应用程序时,如何防止从 LoggerContext 中删除 LogstashTcpSocketAppender?
spring-boot - 为什么我不能对我的自动配置进行组件扫描?
在Spring Boot 的文档中明确指出必须通过spring.factories
文件指定自动配置:
自动配置只能以这种方式加载。确保它们是在特定的包空间中定义的,并且它们永远不是组件扫描的目标。
我确实尝试@Component
在我的自动配置类上添加一个,并确保它会被组件扫描拾取。它似乎工作。
虽然我确实认为这是不好的做法,因为组件扫描不太可能在现实世界的场景中真正找到它,但我想知道为什么文档对此有如此强烈的感觉。是否还有其他我没有预料到的危险,如果有,是哪一个?
编辑:在https://youtu.be/jDchAEHIht0?t=734 Stéphane 和 Brian 解释说有两个阶段,一个称为“用户配置阶段”,另一个称为“自动配置阶段”。按照这种想法,@ComponentScan
在自动配置类上使用会将其移至“用户配置阶段”,这基本上会破坏自动配置的语义。
但是,我无法在我的实验中打破它。只要我保留我的@Conditional
注释,它似乎就可以按预期工作......
java - Springboot 自动配置 @ConditionalOnClass TypeNotPresentExceptionProxy
尝试学习 Springboot 自动配置。
我使用自动配置类创建了以下模块,所示的想法是,migrationAutoConfigBeanCreated
如果调用者应用程序在 claspath 中有 Flyway 库,则将创建 bean:
它工作正常,当调用者模块的类路径中有 Flyway 库时,会显示调试日志。
问题是当我尝试将 @ConditionalOnClass 仅应用于 bean 而不是整个 Configuration 类时,如下所示:
我在午餐时遇到了这个错误:
我不明白为什么。
有我的两个模块 poms:
自动配置pom:
调用者模块:
spring - Spring Boot - @Value 在 @Component 类中返回 null
这是一个简单的类,我试图用@value 映射错误消息。
我没有在属性文件中添加相应的值,因为我设置了默认值
这里抛出新的 UnAuthorisedRequestException(invalidPassword); 返回空
不确定该类有什么问题,因为它被标记为@Component
此类被添加为异常处理程序
spring-boot - @AutoConfigureMockMvc 如何设置消息转换器
使用@AutoConfigureMockMvc时如何指定消息转换器?
考虑以下示例:
如果我使用普通的mockMvc而不是customMvc则会出现以下异常,因为MappingJackson2HttpMessageConverter未注册:
如果我使用customMvc,那么测试是绿色的。所以我需要以某种方式将 MappingJackson2HttpMessageConverter 应用于mockMvc ,但我不知道如何。
请指教
java - 从 Spring Boot 2.1.7 升级到 2.2.0 后,由于 FailureAnalyzer,应用程序无法启动
我正在开发一个基于 Spring Boot 的项目,到目前为止我使用的是 2.1.7。当我开始使用 HateOas 部分时,我决定使用更新的 HATEOAS 1.0,因此我升级了我的应用程序,以便使用 Spring Boot 2.2.0。
我对应用程序所做的唯一更改是:
- 在应用的父pom中更改Spring Boot的版本(Spring Boot为父)
- 通过运行 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
java - SpringBoot - 将 Bean 注册为 Rest Controller
我正在使用 Spring Boot AutoConfiguration 来注册 bean。需要找到一种方法,通过它我可以将通过 Auto-Configuration 配置的 bean 注册为 Rest Controller
SampleController.java
SampleControllerAutoConfiguration.java
我无法注释SampleController
,@RestController
因为它与导入它的父项目在同一个包中,因此由于组件扫描而自动配置