静的メソッドはオブジェクトを作成せずに呼び出すことができますが、非静的メソッドは呼び出す前にオブジェクトのインスタンスが必要です。
したがって、静的メソッド内で非静的メソッドを直接参照することは不可能です。これは、どのオブジェクトの非静的メソッドが呼び出されるかが分からず、オブジェクトがないためコンパイラは答えを与えることができないためです。 。
Java はオブジェクトが見つからないのではないかと心配しています。
解決策:
spring のセット注入メソッド、非静的セッター メソッドを介して静的変数を注入します。例は次のとおりです。
@PropertySource(value = {"classpath:config/application.yml"},ignoreResourceNotFound = true,encoding="UTF-8") @Service public class tank_task { private static String kafka; public static String getProfilesKafka() { return kafka; } @Value("${stream.kafka.servers}") public void setProfilesKafka(String kafka) { tank_task.kafka = kafka; } public static void tank_test(){ System.out.println("config static kafka :" + tank_task.getProfilesKafka()); } }
以上がSpringbootが静的コンテキストから非静的変数を参照できない問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。