我正在尝试从如下所示的属性文件中加载必需的参数,例如accessURI,client_id,client_secret。它从不加载属性,我看到很多站点都以示例为例。如果我尝试对其进行显式设置,则它可以正常工作。
在此示例中 https://dzone.com/articles/build-a-spring-boot-app-with-secure-server-to-serv
@Bean()
@ConfigurationProperties(prefix ="my.oauth2.client")
protected ClientCredentialsResourceDetails oAuthDetails() {
return ClientCredentialsResourceDetails();
但是它从来没有加载属性,所以我需要更改为使用set方法。我无法弄清楚为什么它没有加载,我相信我无法在@EnableConfigurationProperties中提及这一点,因为它没有配置配置。
我尝试搜索,但找不到匹配的原因。
答案 0 :(得分:0)
基本上,属性与类成员的绑定如示例中所述。
属性必须以YAML或属性文件的形式出现:
spring:
security:
oauth2:
client:
registration:
oauth:
client-id: XXXXXX
client-secret: YYYYYYY
scope: openid
redirect-uri: http://redirect
access-token-uri: https://token
client-authentication-method: basic
authorization-grant-type: client_credentials
然后必须使用正确的前缀声明@ConfigurationProperties
批注。在此示例中为“ spring.security.oauth2.client.registration.oauth”。
@Bean
@ConfigurationProperties(prefix ="spring.security.oauth2.client.registration.oauth")
protected ClientCredentialsResourceDetails oAuthDetails() {
return new ClientCredentialsResourceDetails();
}
如Spring Boot documentation中所述,除非您正在开发自己的自动配置,否则通常不必设置@EnableConfigurationProperties
注释。
但是,如果您正在非Spring Boot项目上工作,则必须声明@EnableConfigurationProperties
注释,描述我们要在其中使用@ConfigurationProperties
注释的类:
@Configuration()
@EnableConfigurationProperties(MyProperties.class)
public class MyConfig {
}
使用
@ConfigurationProperties(prefix="myproperties")
public class MyProperties {
}
或者,您也可以使用配置属性扫描,它通过声明@ConfigurationPropertiesScan
批注来与组件扫描类似:
@SpringBootApplication
@ConfigurationPropertiesScan({ "my.app" })
public class MyApplication {
}
希望,这会有所帮助。佩罗