spring-boot - Spring 自动配置尝试从 application.properties 设置一些 bean 值,而我只想在其他地方使用这些信息?
问题描述
所以我在我的应用程序中使用了 keycloak,我有一些值application.properties
:
keycloak.auth-server-url = http://10.10.10.10:1010/auth
keycloak.resource = test-client
keycloak.credentials.secret = <very-big-secret>
keycloak.realm = test-realm
Spring使用这些数据配置keycloak连接,但我也在我的代码中使用它们,所以我有一个这样的配置:
@Data
@Configuration
@ConfigurationProperties(prefix = "keycloak")
public class KeycloakConfig {
private String authServerUrl;
private String realm;
private String resource;
private Credentials credentials;
}
我在 keycloak 中有一个管理员用户,我希望它是 application.properties 中的凭据,如下所示:
keycloak.admin.username=admin.admin
keycloak.admin.password=changeit
所以我试图将我的配置类更改为:
@Data
@Configuration
@ConfigurationProperties(prefix = "keycloak")
public class KeycloakConfig {
private String authServerUrl;
private String realm;
private String resource;
private Credentials credentials;
private Admin admin;
}
@Data
public class Admin {
private String username;
private String password;
}
但是当我尝试像这样运行应用程序时,我认为 spring 尝试设置 keycloak 的值(.admin 部分)并且它没有启动:
***************************
APPLICATION FAILED TO START
***************************
Description:
Binding to target [Bindable@1cd5e41 type = org.keycloak.adapters.springboot.KeycloakSpringBootProperties, value = 'provided', annotations = array<Annotation>[@org.springframework.boot.context.properties.ConfigurationProperties(ignoreInvalidFields=false, ignoreUnknownFields=false, prefix=keycloak, value=keycloak)]] failed:
Property: keycloak.admin.password
Value: changeit
Origin: "keycloak.admin.password" from property source "applicationConfig: [classpath:/application.properties]"
Reason: The elements [keycloak.admin.password,keycloak.admin.username] were left unbound.
Property: keycloak.admin.username
Value: admin.admin
Origin: "keycloak.admin.username" from property source "applicationConfig: [classpath:/application.properties]"
Reason: The elements [keycloak.admin.password,keycloak.admin.username] were left unbound.
Action:
Update your application's configuration
是否可以将.admin
零件放在下面,keycloak
或者我必须创建一个新课程,例如:
@Data
@Configuration
@ConfigurationProperties(prefix = "my-keycloak")
public class MyKeycloakConfig {
private Admin admin;
}
和:
my-keycloak.admin.username=admin.admin
my-keycloak.admin.password=changeit
解决方案
我不熟悉 KeyCloak,但您可以注入由 KeyCloak 初始化的读取属性的 bean。
推荐阅读
- python - 在 Google Colab 上使用 TensorFlow 2.0 时出错
- python - Altair 散点图添加了不需要的线条
- python - 我怎样才能找到将是某个工作日的第二天(例如,下一次是星期一)?
- python-3.x - 如何显示人口增长?
- javascript - 在 javascript 类中丢失“this”的上下文
- reactjs - React Router v5 的问题
- sql - 如何将 refcursor 的值分配给 PL/SQL 中的变量
- python - 链接python扩展模块
- javascript - 在反应组件中设置外部 HTML
- python - TemplateDoesNotExist 位于 /groups/posts/in/first-post/post/_post.html