2011-04-06 72 views
0

我被困在使用Spring 2.0.8(此時仍在等待簽名升級),因爲我不能使用註釋我雖然我會使用xdoclet來生成bean我將在未來編寫大量bean的配置文件。Xdoclet @ spring.bean沒有正確生成配置文件

但是,當我運行我的ant目標時,它會創建xml文件,但它不包含任何bean標記。

我的Ant腳本是這樣的:

<taskdef name="springdoclet" classname="xdoclet.modules.spring.SpringDocletTask"> 
    <classpath refid="springdoclet.classpath"/> 
</taskdef> 

<taskdef name="doclet" classname="xdoclet.DocletTask"> 
    <classpath refid="springdoclet.classpath"/> 
</taskdef> 

<target name="generate-spring-wiring"> 
    <springdoclet destdir="${resource.dir}" excludedtags="@version,@author,@todo"> 
     <fileset dir="${global.src.dir}"/> 
     <springxml destinationfile="spring-wiring.xml"/> 
    </springdoclet> 

</target> 

生成的XML文件是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE beans PUBLIC 
"-//SPRING//DTD BEAN//EN" 
"http://www.springframework.org/dtd/spring-beans.dtd"> 

<beans 
default-autowire="no" 
default-lazy-init="false" 
default-dependency-check="none" 
> 

<!-- 
To include additional bean definitions for Spring in the generated 
application context file, add a file to your XDoclet merge directory 
    called spring-beans.xml that contains the <bean></bean> markup. 
--> 

</beans> 

正如你可以看到沒有豆已經成立。

我的bean類全部從同一個源目錄中的父類繼承。該MasterBean已設置如下:

/** 
* 
*@spring.bean id="master" 
*/ 
abstract public class Master implements Rule { 

.. 
.. 
} 

和樣品子類(在同一個包被設置如下:

/** 
* 
* @spring.bean id="G27" 
*/ 
public class Global27_IncorrectFormTypeForCA extends Master { 

這事做的事實,我的班級擴展超?或者,我只是將它設置了不正確。這個文檔是幾乎不存在,因此任何幫助將感激收到。

感謝

回答

0

我公頃d有關XDoclet和文件集子任務的一些問題,如果將dir屬性設置爲較深(如src/java/my/pacakge/some/package),則無法正常工作,因此將其設置爲src/java可以正常工作。

我知道XDoclet可以從具有超類的類生成Spring bean。我的所有項目的bean都擴展了一些其他類,但是它們的超類不是bean本身,即沒有@spring.bean,它們都是正確生成的。我不確定這是否是一個問題,但由於您的主類是抽象的,它是否需要被定義爲一個Spring bean? Spring確實具有abstract bean的概念,但它與抽象Java類不同。