最近、フィーチャーを機能させるために新しいprofile
を作成するように求められました。プロファイルがアクティブである場合、最後の2行を実行する必要はありませんが、上記のクラスでは@Profileと@ConditionalOnProperty
class A {
public void configure(AuthenticationManagerBuilder auth) throws Exception {
SecurityConfigurer ldapConfigurer = securityFactory.ldapAuthenticationProviderConfigurer();
ldapConfigurer.configure(auth);
SecurityConfigurer offlineConfigurer = securityFactory.offlineAuthenticationProviderConfigurer();
offlineConfigurer.configure(auth);
}
}
:私は変更を加える必要があり二つの状況があります。私はクラスを拡張し、新しいプロファイル@Profile("notOffline")
を割り当て、元のクラスでは@Profile("!notOffline")
を入れました。
class A {
public void configure(AuthenticationManagerBuilder auth) throws Exception {
SecurityConfigurer ldapConfigurer = securityFactory.ldapAuthenticationProviderConfigurer();
ldapConfigurer.configure(auth);
SecurityConfigurer offlineConfigurer = securityFactory.offlineAuthenticationProviderConfigurer();
offlineConfigurer.configure(auth);
}
}
class B extends A {
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
super();
SecurityConfigurer offlineConfigurer = securityFactory.offlineAuthenticationProviderConfigurer();
offlineConfigurer.configure(auth);
}
}
私はリファクタリングする必要がある第二位は次のようなものです:実行されるされていない行は、そのメソッドを使用し、残りの変数に依存し、それが何であるかではありません
class C {
public Something foo() {
code();
code();
code();
thisLineHasNotToBeExecuted();
code();
code();
return something;
}
}
戻る。私が前に行ったアプローチは、このケースにとっては幸いではありません(実行されないこのメソッドを呼び出す2つのメソッドがあります)。
しばらくすると、@Value
と注釈されている最後のクラスにプロパティを追加し、起動時にtomcatに引数を渡すのが良い方法だと気づきました。このようにしてをthisLineHasNotToBeExecuted()
に入れると、class A
とその子に@ConditionalOnProperty
を使用できます。
私のアプローチは正しいですか?
さらに詳しい情報:私はActiveDirectoryを使用するときフェイルオーバー認証を有効にし、2番目のクラスではユーザー情報をキャッシュに保存しないようにしています。
ありがとうございます!