首先強烈遣責water ye同學不負責任的行為,那家伙在blog上貼了
一段spring 2.0m2的test代碼就了事,居然不測試一下,結果俺的spring groovy test代碼折騰半天才過去。
測試代碼俺就不貼了,spring的配置就夠了
1 <?xml version="1.0" encoding="GBK"?>
2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
3 "http://www.springframework.org/dtd/spring-beans.dtd">
4 <beans>
5 <bean class="org.springframework.scripting.support.ScriptFactoryPostProcessor" />
6 <bean id="inlineMessenger" class="org.springframework.scripting.groovy.GroovyScriptFactory">
7 <constructor-arg>
8 <value>inline:
9 package spring.groovy;
10
11 class GroovyInlineMessenger implements Messenger{
12 void sayHello(){
13 System.err.println("Hello");
14 }
15 }
16 </value>
17 </constructor-arg>
18 </bean>
19 <bean id="messenger" class="org.springframework.scripting.groovy.GroovyScriptFactory">
20 <constructor-arg value="classpath:spring/groovy/GroovyMessenger.groovy" />
21 <property name="message" value="Hello World!" />
22 </bean>
23 </beans>
1、第5行的bean定義一定要有,估計是提前編譯groovy腳本的(具體的可能啃一下源碼就明白了)。
2、inlineMessenger這個bean的定義,inline一定要緊跟著<value>寫,我為了美觀,弄成下面兩種寫法都沒過去。
1 <bean id="inlineMessenger" class="org.springframework.scripting.groovy.GroovyScriptFactory">
2 <constructor-arg>
3 <value>
4 inline:
5 package spring.groovy;
6
7 class GroovyInlineMessenger implements Messenger{
8 void sayHello(){
9 System.err.println("Hello");
10 }
11 }
12 </value>
13 </constructor-arg>
14 </bean>
1 <bean id="inlineMessenger" class="org.springframework.scripting.groovy.GroovyScriptFactory">
2 <constructor-arg>
3 <value>
4 <![CDATA[inline:
5 package spring.groovy;
6
7 class GroovyInlineMessenger implements Messenger{
8 void sayHello(){
9 System.err.println("Hello");
10 }
11 }]]>
12 </value>
13 </constructor-arg>
14 </bean>
寫成這樣倒是過的
1 <bean id="inlineMessenger" class="org.springframework.scripting.groovy.GroovyScriptFactory">
2 <constructor-arg>
3 <value><![CDATA[inline:
4 package spring.groovy;
5
6 class GroovyInlineMessenger implements Messenger{
7 void sayHello(){
8 System.err.println("Hello");
9 }
10 }]]>
11 </value>
12 </constructor-arg>
13 </bean>
俺平時習慣讓myeclipse對xml進行格式化,照這么看來,估計一不小心,按個ctrl+shift+F,好端端的spring groovy代碼就過不去了,然后就慢慢找問題吧。