gpt4 book ai didi

java - 如何使用 Autowiring 在 spring 中从属性文件中检索键的值

转载 作者:行者123 更新时间:2023-12-02 02:38:53 24 4
gpt4 key购买 nike

我是 spring 新手,我有一个属性文件,必须从中读取特定的 key 。我必须使用自动接线功能。我正在给出我到目前为止所做的代码,

<bean id="dnqLtrBatchWorkflow" class="com.twentyfirst.dnqltrbatch.beans.DNQLtrBatchWorkflow" >
<property name="pldwDataSource" ref="pldwDS" />
<property name="builder" ref="documentBuilder" />
<property name="externalLib" value="${pldw.library_name1}"></property> // i want to read this key from the properties file
</bean>



public class DNQLtrBatchWorkflow extends NonTransactionalAbstractWorkflow<DNQRecord> {

private static final Logger LOGGER = Logger.getLogger(DNQLtrBatchWorkflow.class);
@Autowired
private String externalLib;

public void aMethod(){

System.out.println(externalLib); // i want to print the value here.
}

//properties file
pldw.connection.url=jdbc:as400://OHINDIBMP1:446/TSL50LIB00
pldw.jdbc.username=TSVQTEBAT1
pldw.jdbc.password=LtxQ8jqGcXcfWnGAtot8fw==
pldw.driverClassName=com.ibm.as400.access.AS400JDBCDriver
pldw.library_name1=TSL50LIBIS

但是当我尝试运行这个时,我遇到了异常

 Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dnqLtrBatchWorkflow': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private java.lang.String com.twentyfirst.dnqltrbatch.beans.DNQLtrBatchWorkflow.externalLib; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [java.lang.String] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)

这个键 pldw.library_name1 我必须进入 DNQLtrBatchWorkflow 类。请帮忙。提前致谢

最佳答案

与bean的定义:

<bean id="dnqLtrBatchWorkflow" class="com.twentyfirst.dnqltrbatch.beans.DNQLtrBatchWorkflow" >
<property name="pldwDataSource" ref="pldwDS" />
<property name="builder" ref="documentBuilder" />
<property name="externalLib" value="${pldw.library_name1}"></property> // i want to read this key from the properties file
</bean>

调用属性 externalLib 的 setter。

因此,您必须为属性添加 setter ,然后才能将其打印出来:

公共(public)类 DNQLtrBatchWorkflow 扩展了 NonTransactionalAbstractWorkflow {

private static final Logger LOGGER = Logger.getLogger(DNQLtrBatchWorkflow.class);

private String externalLib;

public void aMethod(){

System.out.println(externalLib); // i want to print the value here.
}

public void setExternalLib(String value){
this.externalLib = value;
}

如果您正确配置了 PropertyPlaceholderConfigurer,上面的代码应该可以工作

关于java - 如何使用 Autowiring 在 spring 中从属性文件中检索键的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45820577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com