SpringBootはabstractクラスのメンバー変数に値を割り当てることができません.
3944 ワード
問題の説明
SpringBoot環境では、プロファイル内の1つのパラメータxxxが構成可能であり、抽象クラスのメンバー変数にこの構成の値を動的に読み出すことを望む.直接使用
xxxの値がnullであることを発見して、資料を調べて原因を発見します:SpringBootは直接抽象クラスに注入することを許さない
ソリューション@Value注記を使用しないでabstractクラスのxxxメンバー変数にgetter and setter を追加してください.システムパラメータクラス を新規作成新しいコンフィギュレーションクラス
ここでは、コンテナのロード時に${xxx}の内容を読み込み、メモリからシステムパラメータに直接xxxを割り当てる静的変数xxxです. abstractクラスのすべてのサブクラス呼び出しを変更する クラスのロード時にabstractクラスのxxxに値を付与すればよい.具体的には、そのクラスの作成時の構造方法、または他の作成タイミングである可能性がある.
このような利点は、そのオブジェクトのインスタンスが共通のxxx属性を呼び出すことなく、一定の操作可能な空間があることである.
SpringBoot環境では、プロファイル内の1つのパラメータxxxが構成可能であり、抽象クラスのメンバー変数にこの構成の値を動的に読み出すことを望む.直接使用
@Value("${xxx}")
private String xxx;
xxxの値がnullであることを発見して、資料を調べて原因を発見します:SpringBootは直接抽象クラスに注入することを許さない
ソリューション
private String xxx;
public String getXxx() {
return xxx;
}
public void setXxx(String xxx) {
this.xxx = xxx;
}
public class SystemParameter {
private SystemParameter(){}
public static String xxx;
}
@Configuration
public class SystemConfig {
@Value("${xxx}")
private String xxx;
@Bean
public SystemParameter getSystemParameter(){
SystemParameter.xxx = xxx;
return null ;
}
}
ここでは、コンテナのロード時に${xxx}の内容を読み込み、メモリからシステムパラメータに直接xxxを割り当てる静的変数xxxです.
this.setXxx(SystemParameter.xxx);
このような利点は、そのオブジェクトのインスタンスが共通のxxx属性を呼び出すことなく、一定の操作可能な空間があることである.