在Spring bean值中使用正则表达式

时间:2018-04-16 15:39:30

标签: java spring

我有一个带有用户名和密码的ftp服务器URL的spring bean。

<bean id="ftp" class="com....XYZ">
   <property name="url" value=""> /
</bean>

该值有3个部分,ftpusername,ftpserver和ftp密码。我想从属性文件和$ {ftpUsername}获取ftpusername和ftpserver然后添加一个特殊字符说'#'然后添加服务器$ {ftpServer}然后添加“&amp;”然后通过从下面的其他bean获取密码来附加密码

<bean id="ftpPass">
<property name="pass" value="com...LMNPassword.getPassword()"
</bean>

如何将bean ftp中的属性url的值设置为value= "${ftpUSername}+'#'+ ${ftpServer} + '&' + ftpPass"

1 个答案:

答案 0 :(得分:0)

您可以使用Spring Expression Language。但是属性文件中的属性不能直接从表达式访问,因此需要额外的bean

<bean id="ftpPass" >
    <property name="pass" value="com...LMNPassword.getPassword()"/>
</bean>

<bean id="ftpUsername" class="java.lang.String" >
    <constructor-arg value="${ftpUsername}"/>
</bean>

<bean id="ftpServer" class="java.lang.String" >
    <constructor-arg value="${ftpServer}"/>
</bean>

<bean id="ftp">
    <property name="url" value="#{ftpUsername + '#' + ftpServer + '&amp;' + ftpPass.pass}" />
</bean>

另一种选择是将普通值设置为ftp bean并在init方法中构造url