無効の理由は、主に @Value を使用する際の注意事項に注意するためです:
1. 静的変数には作用できません (static);
2. 定数には作用できません (final);
3. 登録されたクラスで使用されていないものには作用できません (@Componet、@Configuration などを使用する必要があります);
#4. この属性を持つクラスを使用する場合, @Autowired と new のみを使用できます。これらの構成は自動的に挿入されません。
これらの予防措置は、その原則によっても決定されます。
スプリングブートの起動プロセスには、次の 2 つの重要なプロセスがあります。
次は 2 つの方法です:
resource.test.imageServer=http://image.everest.com
@Configuration public class EverestConfig { @Value("${resource.test.imageServer}") private String imageServer; public String getImageServer() { return imageServer; } }
@Component @ConfigurationProperties(prefix = "resource.test") public class TestUtil { public String imageServer; public String getImageServer() { return imageServer; } public void setImageServer(String imageServer) { this.imageServer = imageServer; } }
@Autowired private TestUtil testUtil; @Autowired private EverestConfig everestConfig; @GetMapping("getImageServer") public String getImageServer() { return testUtil.getImageServer(); // return everestConfig.getImageServer(); }
@Value("${spring.datasource.url}") private String url;
@Autowired private DBUtils jdbc; @Component public class DBUtils{ @Value("${spring.datasource.url}") private String url; }
以上がSpringBootの@Valueが無効なapplication.properties設定を取得する問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。