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 ...
在Web服务场景中,Spring可以用来管理CXF的服务bean,并负责处理服务的依赖注入。 【webservice】 Web服务是一种通过HTTP协议传输数据的方式,允许不同系统之间进行交互。在这个例子中,通过CXF和Spring的结合,...
在Java开发领域,Ant和Xdoclet是两个重要的工具,它们在构建自动化和元...建议下载后跟随教程逐步操作,以加深对Ant、Xdoclet和Spring整合的理解。同时,记得在实际项目中根据需要调整配置和注解,以满足特定的需求。
在Java开发中,Spring框架因其强大的依赖注入和面向切面编程能力而被广泛使用。然而,手动编写XML配置文件来定义Bean可能会导致大量的重复工作,尤其是在项目规模扩大时。为了解决这一问题,开发者可以利用xDoclet...
**Spring** 是一个全面的企业级应用框架,它包含了AOP(面向切面编程)、DI(依赖注入)等核心特性,以及对其他框架如Struts、Hibernate的集成支持。Spring的IoC容器管理对象的生命周期和依赖关系,使得应用更易于...
因此,虽然了解XDoclet的历史和工作原理对理解Java开发的演变历程有所帮助,但在实际项目中,我们更多地推荐使用现代的开发实践和技术。 在压缩包文件名“KataSoft”中,我们可以推测这可能是一个练习项目或者示例...
4. **灵活性**:XDoclet支持多种框架和标准,如EJB、Hibernate、Spring等,可以自定义模板生成所需的配置。 ## XDoclet的应用场景 ### EJB(Enterprise JavaBeans) 在EJB项目中,XDoclet可以生成ejb-jar.xml、...
XDoclet是一款强大的Java文档注解工具,它能够根据源代码中的特定注解自动生成配置文件,如Java EE相关的部署描述符(如ejb-jar.xml、web.xml等)以及Spring框架的XML配置文件。这款工具在早期Java开发中尤其受欢迎...
在"XDoclet-1.2.6"这个版本中,可能包含了对前一版本的改进和修复,以及对不同框架的支持。具体而言,这个压缩包可能包含以下内容: - `xdoclet-1.2.6.jar`: 这是XDoclet的核心库,包含了所有用于解析Javadoc注释并...
《XDoclet in Action》中文版是一本深入探讨XDoclet高级用法的书籍,尤其适合对自动化代码生成感兴趣的读者。XDoclet是一款强大的Java工具,它可以基于Java源代码中的注释生成各种元数据,例如EJB、Hibernate、JMX等...
这个版本增强了对J2EE、Hibernate、JDO和Spring等框架的支持,使得在开发过程中能够减少手动编写重复的配置文件,提高开发效率并降低出错的可能性。 XDoclet教程通常会涵盖以下几个核心概念: 1. **注解...
"XDoclet-plugins-1.0.3.tar.gz"是一个压缩包文件,其中包含了XDoclet的多个插件,这些插件扩展了XDoclet的功能,使其能够支持更多的框架和开发需求。在解压这个文件后,你会得到一个名为"xdoclet-plugins-1.0.3"的...
5. **扩展性**:XDoclet具有良好的扩展性,允许开发者创建自己的插件来处理特定的注解,以满足特定项目的需求。 使用XDoclet需要注意的是,虽然它能自动化很多任务,但过度依赖注解可能会导致代码可读性下降。因此...
然而,有时用户可能会发现Eclipse缺少对XDoclet的支持,这可能是由于未安装相应的插件或者插件版本不匹配导致的。"xdoclet-src-1.2.1.zip eclipse缺少的这个东西"描述的可能就是这种问题,即用户在Eclipse环境中需要...
总结来说,XDoclet和Ant在Java开发中扮演着重要角色,前者简化了Hibernate映射文件的管理,后者则为项目构建和自动化提供了强大支持。通过合理的利用这两者,开发者可以提高工作效率,降低出错概率,使项目管理更加...
- **持久化框架支持**:XDoclet支持Hibernate、TopLink等ORM框架,能够根据实体类上的注解自动生成持久化代码,减少手动编写SQL和DAO层的工作。 5. **使用方法** 使用XDoclet通常包括以下步骤: - 安装并配置...
- **扩展性**:xdoclet支持插件机制,开发者可以根据需要编写自己的插件,实现自定义的代码生成逻辑,以适应不同的框架或项目需求。 - **版本兼容性**:尽管xdoclet的最新版本已经停止更新,但1.2.1版本仍然广泛...
- **Bean定义**:XDoclet同样可以生成Spring的bean定义,使得基于接口的编程和依赖注入更加方便,减少了XML配置的复杂性。 - **AOP配置**:对于需要面向切面编程(AOP)的场景,XDoclet也能自动生成相关的Aspect配置...