问题标签 [spring-boot-configuration]

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

java - 如何检查spring boot应用程序在自动配置类中是否有某个注解

我正在创建自己的 spring boot 启动器来集中我项目中的一些常见配置。我想让我的 @Configuration 类只匹配,如果我的 spring boot 应用程序以某种方式注释,如下所示:

当我使用@ConditionalOnClass 时:

即使应用程序不是资源服务器(不存在注释),使用依赖项时也会匹配自动配置。

是否存在仅在 Spring Boot 应用程序存在某个注释时才匹配的条件?

0 投票
3 回答
1465 浏览

spring-boot - 从@configuration 获取空值

我正在创建 pojo 类并存储 application.properties 变量,但我得到空值

注意:需要从我的 Abstract 类访问 env

POJO类

使用@autowired 初始化类

扩展到我的 NotificationBaseClass 的具体类

应用程序属性

0 投票
0 回答
560 浏览

java - 无法在多模块 springboot 项目中检索 spring 应用程序上下文/找不到 EntityManagerFactory

我有一个多模块 springboot 项目。这是架构: 在此处输入图像描述

带有注释的类@SpringBootApplication位于顶部模块(webservice)中。@SpringBootTest当我在我的测试类中使用这个顶级模块运行集成测试时,它工作正常。

但现在我想从业务模块运行集成测试。@SpringBootTestonly 不再起作用,因为在业务模块中找不到配置类。所以我在业务模块中创建了一个配置类:

在我的测试类中,我指向了这个配置类,如下所示:

这样做,我希望 Spring 会将包 com.berthoud.p7 及其子文件夹中声明的所有 bean 添加到上下文中。事实上,当我在我的测试类中自动装配 spring bean 时,它现在看起来很好(IntelliJ 不再告诉@autowiredbean 不能自动装配): 在此处输入图像描述

但是,当我运行测试时,Spring 无法加载应用程序上下文:

我不明白这一点。以下是我声明相关 bean 的方式:

我做错了什么?

编辑:像这样更改我的配置类后:

我现在有一个不同的错误:

0 投票
1 回答
122 浏览

java - 创建依赖于具有自己的 bootstrap.yml 的 Spring Boot 的库

我正在开发一个库,我想拥有自己的 bootstrap.yaml 来定义一些配置。我已经在 bootstrap.yaml 中有一个用于用户定义配置的类,但是当我尝试创建另一个配置类时,我永远无法获取存储在 bootstrap.yaml 中的值,但它会从用户那里获取它们引导程序.yaml。

它的外观:

测试项目

  • src/main/resources/bootstrap.yaml <- 我放在这里的任何东西都有效

图书馆

  • src/main/java/UserProperties <- 使用@ConfigurationProperties
  • src/main/java/MyProperties <- 使用@ConfigurationProperties不同的前缀
  • src/main/resources/bootstrap.yaml <- 似乎什么也没做,但我希望 MyProperties 将其用作默认值。

我在某处读到添加@PropertySource("classpath:bootstrap.yaml")到 MyProperties 应该可以工作,但没有运气。

0 投票
1 回答
393 浏览

spring - 一些 Spring Boot 服务之间的共享配置

这个问题类似于(但目标不同):Shared Config(at git) between SPring Boot Services所以我将使用 OP 在那里写的示例。

在我的情况下,我使用带有 Vault 作为后端的 Spring Cloud Config Server,但为了论证,我将它描述为好像它在 git 中一样。所以想象我有 4 个服务:A, B, C and D.

我有以下配置:

现在根据文档,我将拥有其中一项服务,假设Service C从. 与其他人类似,即每个人都有自己的文件和所有内容。C-(ENV).propertiesapplication-(ENV).propertiesapplication.properties

我的问题是:是否有可能拥有例如“半全局”共享属性,例如一个A and C共享一些配置的文件和另一个B and D共享一些配置的文件?

一个使用示例是数据库连接凭据,其中两个服务使用一组凭据,而其他服务使用另一组凭据。

我一直在尝试查找有关此的信息并进行一些测试,但没有任何东西可以让我到任何地方...

0 投票
2 回答
1157 浏览

spring-boot - 如何禁用 TomcatServletWebServerFactory 的 SpringBoot 自动配置以便自定义 spring-starter 提供它?

所以我正在编写自己的 SpringBootStarter,它应该能够在 SpringBoot 应用程序的嵌入式 tomcat 中启用 JNDI 查找。

我的示例 SpringBoot 应用程序依赖于我的自定义 SpringBootStarter,而后者又依赖于 spring-boot-starter-web。如果我在示例 SpringBoot 应用程序中创建如下配置类,则一切正常:

因为 SpringBoot 找到了一个自定义 Bean,所以不会有一个自动配置的默认 Bean/它被覆盖并且 JNDI 已成功启用。

但是,只要我将此 Bean 配置提取到自定义 SpringBoot Starter 的自动配置模块中,尝试启动示例 SpringBoot 应用程序时就会引发以下异常:

我认为这是由于 SpringBoot 没有找到自定义的 Bean,因此创建了一个自动配置的默认 Bean,它也不会被覆盖。所以现在会有两个 ServletWebServerFactory bean,一个是默认的,一个来自我的自动配置模块。

到目前为止我尝试了什么(无济于事):

  • 用 @Primary 注释我的自定义 Bean
  • 将 spring.main.allow-bean-definition-overriding 设置为 true

有没有办法让 SpringBoot 不初始化自动配置的默认 bean,或者任何其他可能的解决方案?

0 投票
1 回答
95 浏览

spring - Spring Boot 配置客户端属性

上面的代码是一个从 git config repo 获取配置属性的 spring 云配置客户端(spring.application.name=foo)。Foo 是 foo.properties 中的属性。在这里,我对上面代码中的 :test 参数有点困惑。我想知道这个参数在获得财产方面的意义是什么。

0 投票
2 回答
198 浏览

spring - 如何有条件地自动装配服务中的配置类

目前,我有一个服务类,我试图在其中构造自动连接配置类。但是,我希望我的服务类是通用的,并且适用于任何具有类似属性的配置类。有没有办法可以根据参数有条件地在服务类中自动连接配置类。我不想要任何 if-else 条件。下面是我的示例代码片段

我希望我的 ServiceClass 根据我在初始化 ServiceClass 时传递的参数自动连接带有前缀 =“xyz”的新 ConfigurationClass

0 投票
0 回答
554 浏览

java - Spring Boot 和外部资源(如 keytab)文件

我需要在我的 Spring Boot 应用程序中加载一些外部资源文件,如下所示...

花了一段时间后,我意识到带有类路径的 java 命令(如下所示)不适用于 Spring Boot jar

在网上阅读了一些文献后,我了解了几个选项,一个是使用zip布局(本质上是用来创建一个fat jar),使用spring-boot-maven-plugin中的配置(如下所示),它使用 org .springframework.boot.loader.PropertiesLauncher

并在命令行中指定属性文件,如下所示

另一个选项是保留默认布局(在我的情况下为jar),但更改默认引导加载启动器类并指定属性文件位置,如下所示

两种解决方案都有效,但我想知道是否会有任何副作用(如启动时间增加或运行时任何其他不良行为)

或者,如果有任何其他更好的替代解决方案来包含外部资源文件,如 keytab、some-connection-truststore.jks 等

0 投票
1 回答
812 浏览

spring-boot - 我可以将 Spring Boot 配置元数据生成为 .properties 文件吗

如果我将spring-boot-configuration-processor作为依赖项包含在内,我的构建将生成一个像这样的 json 文件:

我还想另外生成一个属性文件,其中列出了所有属性及其默认值,如下所示:

理想情况下,我还希望它列出没有默认值但被注释掉的属性。

是否可以使用 Spring Boot 做这样的事情?还是我需要自己写一些东西?