別のクラスのメソッドに渡すために、application.properties
ファイルの値を使用したいと思います。問題は、値が常にNULL
を返すことです。何が問題なのでしょうか?前もって感謝します。
application.properties
filesystem.directory=temp
FileSystem.Java
@Value("${filesystem.directory}")
private static String directory;
静的変数で@Valueを使用することはできません。非静的としてマークするか、静的変数に値を注入する方法をこちらで確認する必要があります。
https://www.mkyong.com/spring/spring-inject-a-value-into-static-variables/
編集:将来リンクが壊れた場合に備えて。これを行うには、静的変数の非静的セッターを作成します。
@Component
public class MyComponent {
private static String directory;
@Value("${filesystem.directory}")
public void setDirectory(String value) {
this.directory = value;
}
}
ただし、クラスはSpring Beanである必要があります。そうしないと、インスタンス化されず、セッターにSpringからアクセスできなくなります。
@Plogの答えとは別に、クロスチェックすることはほとんどありません。
static
変数には値を注入できません。 @Plogの答えを確認してください。
@Component
または@Service
の注釈が付けられていることを確認してください他の答えはおそらくOPにとって正しいでしょう。
ただし、同じ症状(@Value
- annotated fields are null
)に遭遇しましたが、根本的な問題は異なります。
import com.google.api.client.util.Value;
正しい@Value
注釈クラスをインポートしていることを確認してください!特に最近のIDEの利便性により、これは非常に簡単な間違いです(私はIntelliJを使用していますが、自動インポートしているものを読まずに自動インポートするのが速すぎると、私がしたように数時間を無駄にするかもしれません)。
もちろん、インポートする正しいクラスは次のとおりです。
import org.springframework.beans.factory.annotation.Value;