2011-08-30 41 views
6

我試圖在Grails項目中使用加載時織入,以便能夠序列化和反序列化對象並自動注入彈簧依賴關係。經過一番搜索後,我發現一個easy example,這似乎按預期工作。但在將相同的配置應用於簡單的Grails項目之後,我收到了很多錯誤。例如:在grails中加載時織入

[[email protected]] error at org/springframework/web/servlet/theme/AbstractThemeResolver.java::0 class 'org.springframework.web.servlet.theme.AbstractThemeResolver' is already woven and has not been built in reweavable mode 

爲了驗證這一點,我創建了一個新的Grails項目,改變了的applicationContext.xml:

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd"> 

<context:spring-configured /> 
<context:load-time-weaver aspectj-weaving="autodetect" weaver-class="org.springframework.instrument.classloading.ReflectiveLoadTimeWeaver"/> 

在這個文件我也創建了一個新的bean:

<bean class="be.testweaving.Person" scope="prototype"> 
    <property name="name" value="Timon"/> 
</bean> 

這定義了Person類的原型,並將值Timon注入到name屬性中。

我用grails war打包這個戰爭並將其部署到tomcat服務器上。這個tomcat在他的lib目錄中有org.springframework.instrument.tomcat-3.0.5.RELEASE.jar,在部署之後,我看到了上面提到的大量錯誤。

任何人都可以在Grails中配置加載時織入?

+0

當我按照上面提到的例子,並在同一個tomcat中部署這個例子,我可以看到工作的例子和編織似乎工作正常。任何人都可以告訴我,有什麼特定的grails可以防止編織發生? – sterym

+0

您使用的是哪個版本的Grails? –

+0

我正在使用Grails 1.3.7 – sterym

回答

0

爲什麼不通過元類注入屬性?

class ExampleBootStrap { 
def init = { servletContext -> 
    Person.metaClass.constructor = { 
     def person = BeanUtils.instantiateClass(Person) 
     person.name = "Timon" 
     person 
    } 
} 
}