XDoclet是生成配置文件的强有力的工具,在使用Spring框架时,手动编写Spring配置文件极其繁琐,而且容易遗漏,利用XDoclet即可轻松生成配置文件。
XDoclet支持的Spring方法注入包括:ref,list,name和value。遗憾的是,在某个项目中,我需要注入一个包含Bean引用的List:
public void setHandlers(List handlers) {
...
}
然后,XDoclet并不支持元素为引用类型的List,倘若使用下列注释:
/**
* @spring.property list="articleHandler,imageHandler"
*/
public void setHandlers(List handlers) {
...
}
生成的配置文件如下:
<property name="handlers">
<list>
<value>articleHandler</value>
<value>imageHandler</value>
</list>
</property>
毫无疑问,在Spring启动时,一个ClassCastException将被抛出,因为无法将String类型转化为我们自定义的Handler引用类型。
幸运的是,XDoclet良好的可扩展性使我们能够轻松扩展需要的配置,甚至不需要我们利用XDoclet提供的API编写代码。XDoclet提供一种XML结构的模版语言来生成配置文件,对于Spring配置文件,对应的XML配置文件在xdoclet-spring-module-1.2.3.jar/xdoclet/modules/spring/resources/spring_xml.xdt中。
解开jar包,修改spring_xml.xdt,增加如下XML片断(红色部分):
<XDtMethod:forAllMethods superclasses="true">
<XDtMethod:ifHasMethodTag tagName="spring.property">
<property name="<XDtMethod:propertyName/>">
<XDtMethod:ifHasMethodTag tagName="spring.property" paramName="value">
<value><XDtMethod:methodTagValue tagName="spring.property" paramName="value"/></value>
</XDtMethod:ifHasMethodTag>
<XDtMethod:ifHasMethodTag tagName="spring.property" paramName="ref">
<ref bean="<XDtMethod:methodTagValue tagName="spring.property" paramName="ref"/>"/>
</XDtMethod:ifHasMethodTag>
<XDtMethod:ifHasMethodTag tagName="spring.property" paramName="list">
<list>
<XDtMethod:forAllMethodTagTokens tagName="spring.property" paramName="list">
<value><XDtMethod:currentToken/></value>
</XDtMethod:forAllMethodTagTokens>
</list>
</XDtMethod:ifHasMethodTag>
<XDtMethod:ifHasMethodTag tagName="spring.property" paramName="list.ref">
<list>
<XDtMethod:forAllMethodTagTokens tagName="spring.property" paramName="list.ref">
<ref bean="<XDtMethod:currentToken/>"/>
</XDtMethod:forAllMethodTagTokens>
</list>
</XDtMethod:ifHasMethodTag>
</property>
</XDtMethod:ifHasMethodTag>
</XDtMethod:forAllMethods>
注意红色部分的代码,我们仿照list,增加一个list.ref来实现引用类型的List。
现在,修改注释如下:
/**
* @spring.property list.ref="articleHandler,imageHandler"
*/
public void setHandlers(List handlers) {
...
}
备份好原有的xdoclet-spring-module-1.2.3.jar,然后将修改后的目录打包:
jar cvf xdoclet-spring-module-1.2.3.jar .
替换原来的xdoclet-spring-module-1.2.3.jar,运行XDoclet,顺利生成预期配置:
<property name="handlers">
<list>
<ref bean="articleHandler"/>
<ref bean="imageHandler"/>
</list>
</property>
类似的,我们还可以增加XDoclet对Map注入的支持。
分享到:
相关推荐
其中包括xdoclet2与hibernate3.6的整合xdoclet1.2.3分别与spring3.0.5、struts1.3、struts2.1、 servlet的整合配置。其中还有相应的.xdt文件模板,其中struts2.1.xdt为自己写的。 需要xdoclet1.2.3 ...
Weblogic92+CXF+XDoclet+Spring轻松搞定webservice 例子
struts+hibernate+spring+xdoclet+ant+log4j 技术整合,有实例参考,最好的框架!
Ant集合Xdoclet 实例教程(之整合 Spring),附录有说明
博文链接:https://java-xiaodi.iteye.com/blog/143095
通过导入此文件模板,让Eclipse可以支持标签提示, 导入步骤:Eclipse -> Window -> Preferences -> Java -> Editor -> Templates -> Import -> templates.xml
XDoclet 与Hibernate 映射 目前,生成POJO的Hibernate映射文件主要有以下三种方式: ①.手动编码、 ②.由数据库导出配置文件、 ③.XDoclet根据POJO自动生成配置文件。
XDoclet 1.2.3 XJavaDoc 1.5 模板引擎 解压到本地目录 custom_spring_xml.xdt是自定义的XDoclet模板,支持本书中的全部基于Spring 2.0示例。
在myeclipse中用xdoclet生成hbm文件
1.配置doclipse插件,这里就不详细说了。 2.MyEclipse->Window->Preferences,在这里如果看到Doclipse则说明安装成功。...使用XDoclet标签,让标签与java类文件于一体,方便阅读,同时可自动生成配置文件
xdoclet-bin-1.2.1,xdoclet-bin-1.2.1,xdoclet-bin-1.2.1
xdoclet-bin-1.2.1.zip和xdoclet-bin-1.2.3.zip
xdoclet-bin-1.2.3.zip
xdoclet-1.2.1.jar jar包,缺少的可以拿去
通过Ant、xdoclet结合,来维护和管理工程的相关配置和部署。
目前的版本可以为web、ejb、struts、webwork、hibnaate、jdo、jmx等等生成描述文件、源码等,XDoclet提供了ant的任务target支持,完全通过ant来完成任务。 展开XDoclet的发布包,samples目录下有直接可以运行的...
目前的版本可以为web、ejb、struts、webwork、hibnaate、jdo、jmx等等生成描述文件、源码等,XDoclet提供了ant的任务target支持,完全通过ant来完成任务。 展开XDoclet的发布包,samples目录下有直接可以运行的...
XDoclet1.2+XDoclet教程
XDoclet可以通过你在java源代码中的一些特殊的注释信息,... 目前的版本可以为web、ejb、struts、webwork、hibnaate、jdo、jmx等等生成描述文件、源码等,XDoclet提供了ant的任务target支持,完全通过ant来完成任务。
使用XDoclet2生成hibernate映射文件的简单实例