@无法从springboot中的application.properties读取值
我试图使用@value从属性文件中读取值,如下所示@无法从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("${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);
}
}