【发布时间】:2014-09-23 08:35:37
【问题描述】:
SpEL 是 Spring 提供的优秀特性,但有时使用 SpEL 调用类构造函数有点繁琐,这是一个例子
<bean id="plainPojo" class="myPackage.PoJo">
<property name="date" value="#{new java.util.Date()}"/>
</bean>
为了启动Date 实例,我必须包含Date 类的完全限定名称。有没有一种方法可以定义自定义 SpEL 解析器,这样我就不必编写我想使用的类的完全限定名称?
顺便说一句,SpEL可以这样写:
<bean id="plainPojo" class="myPackage.PoJo">
<property name="name" value="#{new String('myName')}"/>
</bean>
String类在java.lang包中,所以我认为Spring框架使用的默认SpEL解析器已经包含了路径java.lang。
【问题讨论】:
-
SpEL 解析器遵循默认的 java 约定,并声明
java.lang包中的所有内容都可用(您不会在导入语句中看到java.lang包)。另外,为什么要使用 XML 进行编程,在这种情况下,它似乎并没有真正有用,因为您可能希望将其放在普通的 java 代码中。 -
这只是一个例子,我想做的是在启动一个bean时调用一些自定义函数。也许这就是我要找的docs.spring.io/spring-integration/reference/html/spel.html
-
在下面查看我的答案。