问题标签 [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 Boot 默认基于属性的自动配置
我想基于application.yml
. 我以为我首先排除了自动配置类,然后将其作为导入添加到我的配置类中,该配置类以该属性为条件:
MyApplication.class:
ApplicationProperties.class
应用程序.yml:
安全配置类:
该类SecurityAutoConfiguration
永远不会被导入:
那我怎样才能达到预期的结果呢?
更新
有趣的是,如果我KafkaAutoConfiguration.class
按照我的预期做同样的事情——所有的 Kafka bean 都会被加载和自动配置。
java - ConditionalOnMissingBean 结合 EnableJpaRepositories
我使用了以下配置:
它创建了一个PagingAndSortingRepository
存储库。如您所见,这仅在“数据库”配置文件处于活动状态时创建。还有其他几个使用其他配置文件激活的 repro。
现在我想创建一个会说话的错误消息,以防没有创建存储库(例如,通过使用错误的配置文件)。
第一个想法是:
@Profile("!database & !filesystem ...")
但是,这对于许多配置文件来说太麻烦了,需要维护。
因此,接下来的想法是:
不幸的是,@EnableJpaRepositories
似乎在@ConditionalOnMissingBean
评估之后才创建存储库 bean。我每次都得到上述异常。
有没有办法在这里实现这个?
谢谢!
java - 通过 spring.profiles.active 覆盖默认应用程序属性
我在通过按spring.profiles.active
属性指定活动配置文件来覆盖默认应用程序属性时遇到问题。
我已经开发了一个示例项目来复制这个问题。我有 2 个 application.yml 文件:
应用程序-default.yml
应用程序-local.yml
然后我开发了一个组件来打印测试值:
这段代码的输出是:
我预计输出将是:
我知道使用application.yml
而不是application-default.yml
按预期工作,但我的目标是使用application.yml
来保存所有配置文件共有的基本属性,并通过使用配置文件指定特定于环境的配置。
我正在使用 spring-boot 2.4.0,build.gradle
为什么这个属性不被覆盖?
java - 使用 @SpringAware MapLoader 正确使用 Spring Boot Hazelcast 自动配置
我有一个使用Spring Boot 2.4.1和Hazelcast 4.1.1的项目。我正在尝试使用 Spring Boot 自动配置来设置分布式地图,并使用 JpaRepository 读取来填充地图。我添加了application.yaml和hazelcast.yaml并提供了一个实现com.hazelcast.map.MapLoader
并com.hazelcast.map.MapLoaderLifecycleSupport
用@SpringAware
. hazelcast 实例启动正常,但从未调用 MapLoader。hazelcast 文档仅提供 Spring XML 配置示例
- 是否可以将 Hazelcast 的 Spring Boot 自动配置与 MapLoader 结合使用,还是我需要提供自己的
com.hazelcast.config.MapConfig
和com.hazelcast.config.Config
bean? - 如何使用
@SpringAware
MapLoader? - init 方法中应该包含什么?
- 我需要用 Hazelcast 上下文注册 Spring 上下文吗?
您可以提供的任何指导将不胜感激。以下是我到目前为止所尝试的:
pom.xml:
应用程序.yaml:
hazelcast.yaml
地图加载器实现:
spring-boot - Hazelcast MapStore 与 Spring Boot Data JPA 循环依赖
我正在使用spring-boot-data-jpa和hazelcast开发Spring Boot 2.4.1项目。我正在尝试设置一个可以读取数据库的分布式地图。我已经实现了,但是当我尝试运行应用程序时,由于循环依赖,它无法启动。似乎 JpaRepository 首先需要 HazelcastInstance 可用,但 HazelcastInstance 需要 MapLoader ,而 MapLoader 又需要 JpaRepository 准备好。至少从日志和这篇文章来看是这样的。com.hazelcast.map.MapLoader
有谁知道如何解决这个问题?
pom.xml
配置:
地图加载器:
JpaRepository:
spring-boot - 如何为 Okta 自动刷新不记名令牌
我有一个带有 Angular UI、Zuul 和一些与 Okta 登录 (OAuth) 集成的服务的应用程序(非响应式)。这工作正常,但在 jwt 令牌过期后卡住了。关于工作流程的一些细节
- 应用 URL 指向 Zuul。
- Zuul 将请求重定向到 Okta。用户登录。
- Okta 发回一个不记名令牌(也是一个刷新令牌)。
- 此不记名令牌被传递到 UI 并存储为 cookie。对于每个请求,UI 都会发送 Authorization 标头以及不记名令牌。
- 这个过程正常工作,直到 jwt 令牌在一小时内过期,然后 Zuul 尝试将其重定向到默认登录页面,因为我们使用 okta 登录,所以该页面没有任何内容。
我的问题
- 如果需要,可以将日志页面重定向到哪里https://dev1234.okta.com/oauth2/default?
- 如何根据刷新令牌获取新的不记名令牌?
- 我可以根据刷新令牌在 Zuul 中自动获取新的不记名令牌吗?如果这不可能,最好的方法是什么?
这是 Zuul 的 application.yml 文件
梯度文件
Zulu WebSecurityConfigurerAdapter
服务应用程序.yml
服务配置文件
摇篮文件
更新 看起来范围“offline_access”确实有所作为。现在我收到 CORS 错误。过滤器到位后,我应该看不到这个吗?这是由于授权标头的存在吗?此外,如果我手动刷新浏览器,则会提供一个新令牌。那么没有CORS问题
Update1 当 JWT 令牌过期时,我看到下面的错误,这是预期的。
401 被发送到 UI 并且 UI 捕获它并重定向到 APP 中的另一个 url。这些是网关日志
在浏览器控制台上,我看到了错误
网关上定义的过滤器是否应该不处理此 CORS 错误,或者是否未应用 CORS 过滤器?让我感到困惑的是,如果我转到浏览器并单击刷新按钮,它就可以正常工作。
spring - 多个项目的spring data JPA common @EnableJpaRepositories - 共享jar
我正在使用 spring boot 2.2.5.RELEASE 和 spring-data-2.2.5.RELEASE
我们在不同的 git 存储库中有多个项目,我正在尝试创建一个通用 JSON 存储库以通过共享 jar 使用 MySQL JSON 函数。
我在具有自动配置的公共 jar 中创建了以下内容
配置类
我的资源中有一个spring.factorie
文件,将其配置为自动配置
和我的实现存储库
问题
当我使用包含我制作的所有 json commons 的公共 jar 时,spring-data 停止检测所有存储库,并且由于缺少 bean,我无法启动应用程序
只有当我在消费项目中添加另一个 @configuration 时它才有效,并且我想让它自动工作以保存在我想添加 JSON 查询功能的每个项目上定义它
我该如何解决?
spring-boot - 了解 kubernetes spring boot 应用程序中的采购秘密
我正在按照本指南使用机密:https ://docs.spring.io/spring-cloud-kubernetes/docs/current/reference/html/index.html#secrets-propertysource 。
粗略地说。
保存秘密
在 deployment.yml 文件中引用秘密
然后它说“您可以通过多种方式选择要使用的秘密:”并给出 3 个示例。但是,如果不执行任何这些步骤,我仍然可以完美地看到我的环境中的秘密。此外,步骤 1 和步骤 2 中的操作独立于 Spring Boot 操作(将机密保存并移动到环境变量中)
我的问题:
- 如果我进行第 3 步中建议的更改,它会对我的容器/应用程序/pod 进行哪些更改/改进?
- 有没有办法能够避免步骤 1 中的所有映射并将所有秘密放在一个环境中?
- 他们写 -Dspring.cloud.kubernetes.secrets.paths=/etc/secrets 来获取所有秘密,他们怎么知道秘密在一个名为 /etc/ 的文件夹中
java - 春季启动@AutoConfigureBefore不工作
我依赖于我的自定义 Redis 启动器,它有一个配置类,我想在此之前启动RedissonAutoConfiguration
它,为此,我使用@AutoConfigureBefore
注释,但它似乎不起作用,仍然RedissonAutoConfiguration
是首先启动的。
唯一可以工作的似乎是添加@ComponentScan(basePackage = "path_to_config")
,但我不想在这里使用任何注释,我想自己开始RedissonAutoConfiguration
之前
spring.factories
我的 Redis 启动器中有文件来进行类自动配置
spring-boot - Spring Boot:自动配置的工作原理和@JsonTest
我已经阅读了一些关于自动配置如何在幕后工作的东西(配置类@Conditional
,spring.factories
内部/META-INF
等......)
现在我试图用一个例子来理解:@JsonTest
我可以看到这个注释被注释了@AutoConfigureJson
这@AutoConfigureJson
到底是做什么的?它是否导入了一些带有 bean 的配置类?Spring如何知道如何使用这个注解(基本上这个注解几乎是空的,并没有说要扫描哪些类)