Java 如何使用自动关联从spring中的属性文件中检索键的值

Java 如何使用自动关联从spring中的属性文件中检索键的值,java,spring,Java,Spring,我是spring新手,我有一个属性文件,必须从中读取特定的密钥。我必须使用自动布线功能。我正在给代码我到目前为止所做的 <bean id="dnqLtrBatchWorkflow" class="com.twentyfirst.dnqltrbatch.beans.DNQLtrBatchWorkflow" > <property name="pldwDataSource" ref="pldwDS" /> <property name="builder"

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

<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 

这个键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>

如果您已使用bean的定义正确配置了
属性PlaceHolderConfigure
,则上述代码应该可以工作:

<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>

如果您正确配置了
属性PlaceHolderConfigure
,如果您想继续使用基于注释的类配置,我认为您需要的是@Value而不是@Autowire

确保属性文件位于类路径上,然后按如下方式注释字段:

@Value("${pldw.library_name1}")
private String externalLib;
这样做的好处是,您甚至不必为字段编写setter。并从bean定义中删除属性标记


有关@Value的更多用法,请检查此项:

如果您想继续使用基于注释的类配置,我认为您需要的是@Value而不是@Autowire

确保属性文件位于类路径上,然后按如下方式注释字段:

@Value("${pldw.library_name1}")
private String externalLib;
这样做的好处是,您甚至不必为字段编写setter。并从bean定义中删除属性标记


有关@Value的更多用法,请选中此项:

不能自动关联字符串。您只能自动连接bean。@Jens谢谢您的回复,但我如何在该类中获得键值?您不能自动连接字符串。您只能自动连接bean。@Jens谢谢您的回复,但我将如何获取该类中的键值?我将获得此异常java.lang.IllegalArgumentException:无法解析字符串值“${pldw.library\u name1}”中的占位符“pldw.library\u name1”您还需要有一个属性占位符configurerbean,它告诉spring在哪里找到属性。如下所示:
whater.properties
我得到了这个异常java.lang.IllegalArgumentException:无法解析字符串值“${pldw.library\u name1}”中的占位符“pldw.library\u name1”您还需要有一个属性占位符configurerbean,它告诉spring在哪里找到属性。像这样:
where.properties