@无法从springboot中的application.properties读取值

@无法从springboot中的application.properties读取值,spring,spring-boot,Spring,Spring Boot,我试图使用@value从属性文件中读取值,如下所示 @Value("${abc}") private String abc; public List<Record> fetchRecords(String label, String predicate) { System.out.println(abc); } 为什么我不能在fetchRecords()方法中获取值 以下代码仅供参考 @Component public class AuditRecord {

我试图使用@value从属性文件中读取值,如下所示

 @Value("${abc}")
private String abc;

  public List<Record> fetchRecords(String label, String predicate) {
   System.out.println(abc);

}
为什么我不能在fetchRecords()方法中获取值

以下代码仅供参考

@Component

public class AuditRecord {
    private String subject;
    private String predicate;
    private String oldObject;
    private String newObject;
    private String readOnlyAuthInfo;

    @Value("${registry.system.base}")
    private String registrySystemContext;

    public void record(DatabaseProvider provider) throws AuditFailedException {

        System.out.println("---registrySystemContext value showing null here---"+registrySystemContext);
       ...
     }
 @PostConstruct
    public void postconstruct() {
        System.out.println("---registrySystemContext value showing here as expected---"+registrySystemContext);
    }
}
我打电话的方式如下:

@Component
public class RegistryDaoImpl implements RegistryDao {
...
private void addOrUpdateVertexAndEdge(Vertex v, Vertex dbVertex, GraphTraversalSource dbGraph, String methodOrigin){
...
    AuditRecord record = new AuditRecord();
                            record
                            .subject(dbVertex.label())
                            .predicate(e.label())
                            .oldObject(null)
                            .newObject(existingV.label())
                            .record(databaseProvider);
}
}

p.S.registry.system.base位于application.yml中

您需要自动连线
AuditRecord
,而不是直接使用
new
。只有这样,您才能在Spring的上下文中使用您的类。
我们不知道您对该类的确切用法,但您可能对Spring的
FactoryBean

感兴趣,您是否从正确的包中导入@Value?@Tyler我想您可能需要仔细检查导入的内容。如果您的IDE自动导入一些其他@Value,比如从Lombok导入的@Value,则可能会有一个空值。您的类是否定义为
@组件
?您是在spring托管bean上调用该方法还是通过
new MyClass().fetchRecords()
?发布一个完整的例子会很有帮助。
@Component
public class RegistryDaoImpl implements RegistryDao {
...
private void addOrUpdateVertexAndEdge(Vertex v, Vertex dbVertex, GraphTraversalSource dbGraph, String methodOrigin){
...
    AuditRecord record = new AuditRecord();
                            record
                            .subject(dbVertex.label())
                            .predicate(e.label())
                            .oldObject(null)
                            .newObject(existingV.label())
                            .record(databaseProvider);
}
}