问题标签 [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.
java - 如何检查spring boot应用程序在自动配置类中是否有某个注解
我正在创建自己的 spring boot 启动器来集中我项目中的一些常见配置。我想让我的 @Configuration 类只匹配,如果我的 spring boot 应用程序以某种方式注释,如下所示:
当我使用@ConditionalOnClass 时:
即使应用程序不是资源服务器(不存在注释),使用依赖项时也会匹配自动配置。
是否存在仅在 Spring Boot 应用程序存在某个注释时才匹配的条件?
spring-boot - 从@configuration 获取空值
我正在创建 pojo 类并存储 application.properties 变量,但我得到空值
注意:需要从我的 Abstract 类访问 env
POJO类
使用@autowired 初始化类
扩展到我的 NotificationBaseClass 的具体类
应用程序属性
java - 无法在多模块 springboot 项目中检索 spring 应用程序上下文/找不到 EntityManagerFactory
带有注释的类@SpringBootApplication
位于顶部模块(webservice)中。@SpringBootTest
当我在我的测试类中使用这个顶级模块运行集成测试时,它工作正常。
但现在我想从业务模块运行集成测试。@SpringBootTest
only 不再起作用,因为在业务模块中找不到配置类。所以我在业务模块中创建了一个配置类:
在我的测试类中,我指向了这个配置类,如下所示:
这样做,我希望 Spring 会将包 com.berthoud.p7 及其子文件夹中声明的所有 bean 添加到上下文中。事实上,当我在我的测试类中自动装配 spring bean 时,它现在看起来很好(IntelliJ 不再告诉@autowired
bean 不能自动装配):
但是,当我运行测试时,Spring 无法加载应用程序上下文:
我不明白这一点。以下是我声明相关 bean 的方式:
我做错了什么?
编辑:像这样更改我的配置类后:
我现在有一个不同的错误:
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 应该可以工作,但没有运气。
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).properties
application-(ENV).properties
application.properties
我的问题是:是否有可能拥有例如“半全局”共享属性,例如一个A and C
共享一些配置的文件和另一个B and D
共享一些配置的文件?
一个使用示例是数据库连接凭据,其中两个服务使用一组凭据,而其他服务使用另一组凭据。
我一直在尝试查找有关此的信息并进行一些测试,但没有任何东西可以让我到任何地方...
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,或者任何其他可能的解决方案?
spring - Spring Boot 配置客户端属性
上面的代码是一个从 git config repo 获取配置属性的 spring 云配置客户端(spring.application.name=foo)。Foo 是 foo.properties 中的属性。在这里,我对上面代码中的 :test 参数有点困惑。我想知道这个参数在获得财产方面的意义是什么。
spring - 如何有条件地自动装配服务中的配置类
目前,我有一个服务类,我试图在其中构造自动连接配置类。但是,我希望我的服务类是通用的,并且适用于任何具有类似属性的配置类。有没有办法可以根据参数有条件地在服务类中自动连接配置类。我不想要任何 if-else 条件。下面是我的示例代码片段
我希望我的 ServiceClass 根据我在初始化 ServiceClass 时传递的参数自动连接带有前缀 =“xyz”的新 ConfigurationClass
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 等
spring-boot - 我可以将 Spring Boot 配置元数据生成为 .properties 文件吗
如果我将spring-boot-configuration-processor作为依赖项包含在内,我的构建将生成一个像这样的 json 文件:
我还想另外生成一个属性文件,其中列出了所有属性及其默认值,如下所示:
理想情况下,我还希望它列出没有默认值但被注释掉的属性。
是否可以使用 Spring Boot 做这样的事情?还是我需要自己写一些东西?