为什么我们使用Simple LoadTimeWeaver?

时间:2012-01-16 08:59:02

标签: java spring

我看到代码在使用“Simple Load Timer Weaver”时会在spring xml文件中声明entityManager bean,如下所示:

<bean id="entityManager" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceXmlLocation" value="classpath:./META-INF/persistence.xml" />
    <property name="persistenceUnitName" value="testDB" />
    <property name="dataSource" ref="dataSource" />
    <property name="loadTimeWeaver">
        <bean class="org.springframework.instrument.classloading.SimpleLoadTimeWeaver" />
    </property>
</bean>

我无法在此确定SimpleLoadTimeWeaver类的用途?任何身体能让我知道职业选手和职业选手吗?在这里使用课程的缺点。

2 个答案:

答案 0 :(得分:2)

澄清 weaver 是什么:

使用AOP,您可以定义在代码中定义的点调用的逻辑,例如每当调用一个setter时。由于该逻辑是在您希望以这种方式装饰的类之外开发的(您不希望自己将该逻辑放入所有 setter),因此运行时需要一种方法来知道应该执行此操作。 / p>

因此,在某个时间点(编译时或加载时),AOP逻辑被添加到它应用的代码中的所有点,并生成(和编译)类代理。这个过程称为编织,因为您的原始代码和您定义的AOP逻辑是编织在一起的。

有关Spring AOP的更多信息,请查看此处:http://static.springsource.org/spring/docs/2.5.x/reference/aop.html

答案 1 :(得分:0)

来自javadoc

  

构建和公开a的LoadTimeWeaver   SimpleInstrumentableClassLoader。

     

主要用于测试环境,足以满足   在新创建的ClassLoader上执行所有类转换   实例

来自SimpleInstrumentableClassLoader javadoc

  

简化实施可检测的ClassLoader。

     

可用于测试和独立环境。