java - Spring 5 不再向共享 entityManager 注入代理
问题描述
@Configurable
public Class SomeClass {
@PersistenceContext(type = PersistenceContextType.EXTENDED)
private EntityManager entityManager;
}
在 spring 4/hibernate 4 中,此代码用于注入提供对共享 entityManager(使用 openEntityManagerInViewFilter 创建)的访问权限的代理,我正在尝试迁移此旧代码库以使用 spring 5 / hibernate 5,但 spring 5正在注入一个实际的 entityManager 实例而不是代理。此管理器由应用程序管理,并且在任何时候都不会关闭,并且会导致连接泄漏。如何恢复旧行为,spring 会在哪里注入代理?
我的配置:
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"
mode="aspectj" />
<context:spring-configured />
<bean class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" id="dataSource">
<property name="jdbcUrl" value="${database.url}" />
<property name="driverClass" value="${database.driverClassName}" />
<property name="user" value="${database.username}" />
<property name="password" value="${database.password}" />
<property name="minPoolSize" value="${database.minPoolSize}" />
<property name="maxPoolSize" value="${database.maxPoolSize}" />
<property name="preferredTestQuery" value="${database.preferredTestQuery}" />
<property name="maxIdleTime" value="${database.maxIdleTime}" />
</bean>
<bean class="org.springframework.orm.jpa.JpaTransactionManager"
id="transactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<bean
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
id="entityManagerFactory">
<property name="persistenceUnitName" value="corePersistenceUnit"/>
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan"
value="some.packages"></property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.jmx.enabled">true</prop>
</props>
</property>
</bean>
解决方案
推荐阅读
- c - 字符串数组在函数中没有得到正确的值
- python - 当 sys.stdout 为 None 时是什么意思
- android - 在圆弧上画圆
- python - 如何将下载按钮的值获取到我的 django 视图中?
- python - 如何使用 lxml 和请求在锚点中获取元素文本?
- c++ - C ++:按公共基数对整数进行分组以节省内存
- enums - 如何找到枚举变体的参数数量?
- javascript - 如何在不模糊的情况下拉伸 WebGL 画布?“图像渲染”样式不起作用
- java - 无法连接到 SQL 数据库(Java、Android Studio)
- python - Pandas 按列计算值的频率