私はIntellijIdeaとgradleを使用します。 Gradleのコンフィグは:サードパーティの@ConfigurationProperties @Beanではどのように動作しますか?
...
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'
}
は[OK]を、私自身のプロパティを作成するために私が必要:
@Component
@ConfigurationProperties("own.prefix")
@Data
public class TestProps {
public String field;
}
@Configuration
@EnableConfigurationProperties(TestProps.class)
public class AppConf {}
と私はプロジェクトスプリング・ブート・コンフィギュレーション・プロセッサを再構築META-INFO新しいgenereate、application.propertiesでそうした後、私はown.prefix.field =を使うことができ、Springはそれを見ます。
しかし、私はサードパーティの設定クラスでどうすればよいですか? ドキュメントhttp://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.htmlは言う:
と同様にクラスに注釈を付けるために
@ConfigurationProperties
を使用して、あなた も@Bean
方法でそれを使用することができます。 コントロールの外部にあるサードパーティのコンポーネントにプロパティをバインドする場合は、これは特に便利です( )。@ConfigurationProperties(prefix = "foo") @Bean public FooComponent fooComponent() { ... }
FOOプレフィックスで定義されたプロパティがて、ConnectionPropertiesと同様にその FooComponent豆にマッピングされます、環境特性からBeanを構成するその豆登録に
@ConfigurationProperties
を追加する上記の例の 。
やってみよう。
@Configuration
@EnableOAuth2Sso
public class SocialConfig {
@Bean
@ConfigurationProperties("facebook.client")
OAuth2ProtectedResourceDetails facebook() {
return new AuthorizationCodeResourceDetails();
}
@Bean
@ConfigurationProperties("facebook.resource")
ResourceServerProperties facebookResource() {
return new ResourceServerProperties();
}
}
しかし、プロジェクトのプロパティfacebook.clientとfacebook.resourceを再構築した後、私のapplication.propertiesには存在しません:たとえば、私は(
https://spring.io/guides/tutorials/spring-boot-oauth2/)ジッドのようにBeanを宣言します。
はまた、私は後に、それはまだ動作していない再構築
@Configuration
@EnableConfigurationProperties(SocialConfig.class)
public class AppConf {}
にSocialConfig.classを追加してみました。 このように:
@Configuration
@EnableConfigurationProperties
public class AppConf {}
まだ同じです。
私は間違っていますか? また、私の英語には申し訳ありません:)
「私のapplication.propertiesには存在しません」とはどういう意味ですか?オートコンプリートの値として持っていないと言っていますか?オートコンプリートの値は、これらのプロパティをコンフィグレーションに追加することもできないこともありません。オートコンプリートは、各プロパティの命名について開発者のメモリを削減するために最善の努力をしています。 オートコンプリート機能は唯一の懸案事項ですか、解決しようとしている別の問題がありますか? –
はい、.propertiesで自動補完が問題の主なアイデアです。 なぜ最初はそれが火格子で動作しますが、別のビルドでは黄色のバナナのように見えます。 私は通知を隠すことができますが、私は最初のケースのようにオートコンプリートを実装したいと思います。 これはやり方ですか? – DamienMiheev