如何使用第三方@ConfigurationProperties @Bean?

达米安·米赫耶夫(DamienMiheev)

我使用IntellijIdea和gradle。Gradle配置:

...
apply plugin: 'propdeps'
apply plugin: 'propdeps-idea'
apply plugin: 'propdeps-maven'
buildscript {
    repositories {
        maven { url 'http://repo.spring.io/plugins-release' }
    }
    dependencies {
        classpath 'org.springframework.build.gradle:propdeps-plugin:0.0.7'
    }
}

compileJava.dependsOn(processResources)
dependencies {
    ...
    optional group: 'org.springframework.boot', name: 'spring-boot-configuration-processor', version: '1.4.0.RELEASE'
}

好的,要创建我自己的属性,我需要:

@Component
@ConfigurationProperties("own.prefix")
@Data
public class TestProps {
    public String field;
}

@Configuration
@EnableConfigurationProperties(TestProps.class)
public class AppConf {}

在我重建项目spring-boot-configuration-processor生成新的META-INFO之后,因此在application.properties中,我可以使用own.prefix.field =,而Spring可以看到它。

但是我应该对第三方配置类怎么办?文档http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html说:

除了@ConfigurationProperties用于注释类之外,还可以在@Bean方法上使用它当您想将属性绑定到控件之外的第三方组件时,此功能特别有用。

要从Environment属性配置Bean,请添加@ConfigurationProperties到其Bean注册中:

@ConfigurationProperties(prefix = "foo")
@Bean
public FooComponent fooComponent() {
    ...
}

使用foo前缀定义的任何属性都将以与上面的ConnectionProperties示例类似的方式映射到该FooComponent bean。

好的。我们试试吧。例如,我在gide(https://spring.io/guides/tutorials/spring-boot-oauth2/)中声明了bean

@Configuration
@EnableOAuth2Sso
public class SocialConfig {

    @Bean
    @ConfigurationProperties("facebook.client")
    OAuth2ProtectedResourceDetails facebook() {
        return new AuthorizationCodeResourceDetails();
    }

    @Bean
    @ConfigurationProperties("facebook.resource")
    ResourceServerProperties facebookResource() {
        return new ResourceServerProperties();
    }
}

但是,在重建项目属性之后,我的application.properties中不存在facebook.client和facebook.resource。

我也尝试将SocialConfig.class添加到

@Configuration
@EnableConfigurationProperties(SocialConfig.class)
public class AppConf {}

重建后仍然无法正常工作。像这样:

@Configuration
@EnableConfigurationProperties
public class AppConf {}

还是一样。

我究竟做错了什么?也为我的英语感到抱歉:)

斯蒂芬·尼科尔(Stephane Nicoll)

您在做错的是您的@Configuration类中的方法不是公共的。只需添加publicfacebookfacebookResource您就可以了。我刚刚在c4cb8317完善了该文档,提交了PR以修复您用作基础的教程

另外,由于未使用标记嵌套对象,因此生成的元数据大多为空@NestedConfigurationProperty我已经提交了另一个请求,以解决此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何#include第三方库

来自分类Dev

如何链接到第三方Swift框架

来自分类Dev

如何序列化第三方课程?

来自分类Dev

如何调试第三方Gradle插件?

来自分类Dev

如何安装第三方库

来自分类Dev

第三方库的新版本如何?

来自分类Dev

如何克服阻碍第三方的功能

来自分类Dev

如何“隐藏”第三方对象背后的界面

来自分类Dev

如何从第三方为@Inject到CDI bean中设置非CDI bean

来自分类Dev

Odoo:如何添加第三方库

来自分类Dev

如何通过Firebase调用第三方API?

来自分类Dev

如何引用第三方npm模块?

来自分类Dev

解决第三方程序包中的bean冲突

来自分类Dev

如何从Elixir调用第三方Erlang模块?

来自分类Dev

如何模拟第三方React Native NativeModules?

来自分类Dev

如何管理冲突的第三方CSS

来自分类Dev

如何安装第三方Rhythmbox插件?

来自分类Dev

如何调试第三方Flutter插件

来自分类Dev

如何模拟第三方静态方法

来自分类Dev

如何安装第三方Rhythmbox插件?

来自分类Dev

ImageJ:如何使用第三方插件API?

来自分类Dev

如何#include第三方库

来自分类Dev

如何将第三方bean自动连接到我的@Controller bean

来自分类Dev

使用第三方控件

来自分类Dev

使用第三方控件

来自分类Dev

解决第三方程序包中的bean冲突

来自分类Dev

如何查找第三方库中正在使用的第三方组件

来自分类Dev

第三方库的使用

来自分类Dev

如何使用第三方组件