2011-08-30 55 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 
    } 
} 
}