java - 为什么我们使用 Simple LoadTimeWeaver?

标签 java spring

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

<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 类在此的用途?任何人都可以让我知道在这里使用该类的优点和缺点吗?

最佳答案

澄清什么是编织者:

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

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

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

关于java - 为什么我们使用 Simple LoadTimeWeaver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8877602/

相关文章:

java - 可滚动复选框

java - Apache Camel - JUNIT 测试中端点上没有可用的消费者

java - Spring - 删除验证错误?

java - Intellij Idea 无法从其他源找到类文件

java - H2 数据库中的存储过程

java - 使用 sleep 函数时出现错误异常

Java/Spring-Boot Web 应用程序不提供公共(public)资源目录中的 Assets

java - 使用运行时参数创建单例 bean

java - Spring Security配置问题

java - Hibernate调用违反协议(protocol)异常