Springは静的変数に値を注入します.

3729 ワード

一、問題
  • 実際に開発する過程で、私達はよく構成ファイルにパラメータを定義する必要があります.プロジェクトで使用します.
  • 設定ファイルに変数を定義します.dubbo.provider.version=1.0.0.
  • はこの変数に値を注入します.
    @Value("${dubbo.provider.version}")
    private String dubboVersion;
    
  • しかし、静的な方法を定義したら、構成ファイルの属性を使用する必要があります.習慣的に変数を静的に変更して、そのまま使用します.例えば、
    @Value("${dubbo.provider.version}")
    private static String dubboVersion;
    
  • 使っても間違えないです.よさそうですが、本当に大丈夫ですか?実はだめです.この変数の値は注入されていません.ずっとnullです.
  • 二、静的変数への注入値-01
  • @Componentコメントをクラスに追加します.
  • はset方法を使用する.
    private static String dubboVersion;
    
    @Value("${dubbo.provider.version}")
    public void setDubboVersion(String version) {
           
        dubboVersion = version;
    }
    
  • 三、静的変数への注入値-02
  • 私達は多くの時直接業務コードの中で@Value()の注釈を使わないで、統一的な変数種類を定義します.例えば、
    @Data
    @Configuration
    public class PropertiesConfig {
           
    
    @Value("${dubbo.provider.version}")
    private String dubboVersion;
    }
    
  • このタイプを注入したいですが、どうすればいいですか?
  • は、PropertiesConfigを導入する必要があるクラスに@Component注釈を追加する.
  • 注入このクラス:
    @Component
    public class UrlUtils {
           
    
        private static PropertiesConfig propertiesConfig;
    
        @Autowired
        public UrlUtils(PropertiesConfig propertiesConfig) {
           
            UrlUtils.propertiesConfig = propertiesConfig;
        }