Revert "Fix APC registration for @EnableTransactionManagement"
@PostConstruct added to ProxyTransactionManagementConfiguration cases
ConcurrentModificationException (as detailed previously in SPR-8397.
Backing out for now until a better solution can be devised.
This reverts commit 235b729514.
This commit is contained in:
parent
f1ef3e4dcd
commit
d8d9e3fc27
|
|
@ -22,7 +22,6 @@ import static org.junit.Assert.assertThat;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.junit.Assert.fail;
|
import static org.junit.Assert.fail;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
@ -33,14 +32,9 @@ import org.junit.Test;
|
||||||
import org.springframework.aop.Advisor;
|
import org.springframework.aop.Advisor;
|
||||||
import org.springframework.aop.framework.Advised;
|
import org.springframework.aop.framework.Advised;
|
||||||
import org.springframework.aop.support.AopUtils;
|
import org.springframework.aop.support.AopUtils;
|
||||||
import org.springframework.cache.Cache;
|
|
||||||
import org.springframework.cache.CacheManager;
|
|
||||||
import org.springframework.cache.concurrent.ConcurrentMapCache;
|
|
||||||
import org.springframework.cache.support.SimpleCacheManager;
|
|
||||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.context.annotation.ImportResource;
|
|
||||||
import org.springframework.context.config.AdviceMode;
|
import org.springframework.context.config.AdviceMode;
|
||||||
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
||||||
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
|
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
|
||||||
|
|
@ -158,38 +152,6 @@ public class EnableTransactionManagementIntegrationTests {
|
||||||
assertThat(txManager2.rollbacks, equalTo(0));
|
assertThat(txManager2.rollbacks, equalTo(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void apcEscalation() {
|
|
||||||
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
|
|
||||||
ctx.register(EnableTxAndCachingConfig.class);
|
|
||||||
ctx.refresh();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableTransactionManagement
|
|
||||||
@ImportResource("org/springframework/transaction/annotation/enable-caching.xml")
|
|
||||||
static class EnableTxAndCachingConfig {
|
|
||||||
@Bean
|
|
||||||
public PlatformTransactionManager txManager() {
|
|
||||||
return new CallCountingTransactionManager();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public FooRepository fooRepository() {
|
|
||||||
return new DummyFooRepository();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public CacheManager cacheManager() {
|
|
||||||
SimpleCacheManager mgr = new SimpleCacheManager();
|
|
||||||
ArrayList<Cache> caches = new ArrayList<Cache>();
|
|
||||||
caches.add(new ConcurrentMapCache());
|
|
||||||
mgr.setCaches(caches);
|
|
||||||
return mgr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableTransactionManagement
|
@EnableTransactionManagement
|
||||||
|
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xmlns:cache="http://www.springframework.org/schema/cache"
|
|
||||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
|
||||||
http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">
|
|
||||||
|
|
||||||
<cache:annotation-driven/>
|
|
||||||
|
|
||||||
</beans>
|
|
||||||
|
|
@ -16,12 +16,9 @@
|
||||||
|
|
||||||
package org.springframework.transaction.annotation;
|
package org.springframework.transaction.annotation;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
|
||||||
|
|
||||||
import org.springframework.aop.config.AopConfigUtils;
|
import org.springframework.aop.config.AopConfigUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.aop.framework.autoproxy.InfrastructureAdvisorAutoProxyCreator;
|
||||||
import org.springframework.beans.factory.config.BeanDefinition;
|
import org.springframework.beans.factory.config.BeanDefinition;
|
||||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.context.annotation.Role;
|
import org.springframework.context.annotation.Role;
|
||||||
|
|
@ -42,17 +39,6 @@ import org.springframework.transaction.interceptor.TransactionInterceptor;
|
||||||
@Configuration
|
@Configuration
|
||||||
public class ProxyTransactionManagementConfiguration extends AbstractTransactionManagementConfiguration {
|
public class ProxyTransactionManagementConfiguration extends AbstractTransactionManagementConfiguration {
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private DefaultListableBeanFactory registry;
|
|
||||||
|
|
||||||
@PostConstruct
|
|
||||||
public void registerAutoProxyCreator() {
|
|
||||||
AopConfigUtils.registerAutoProxyCreatorIfNecessary(registry);
|
|
||||||
if ((Boolean)enableTx.get("proxyTargetClass")) {
|
|
||||||
AopConfigUtils.forceAutoProxyCreatorToUseClassProxying(registry);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean(name=TransactionManagementConfigUtils.TRANSACTION_ADVISOR_BEAN_NAME)
|
@Bean(name=TransactionManagementConfigUtils.TRANSACTION_ADVISOR_BEAN_NAME)
|
||||||
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||||
public BeanFactoryTransactionAttributeSourceAdvisor transactionAdvisor() {
|
public BeanFactoryTransactionAttributeSourceAdvisor transactionAdvisor() {
|
||||||
|
|
@ -81,4 +67,12 @@ public class ProxyTransactionManagementConfiguration extends AbstractTransaction
|
||||||
return interceptor;
|
return interceptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: deal with escalation of APCs
|
||||||
|
@Bean(name=AopConfigUtils.AUTO_PROXY_CREATOR_BEAN_NAME)
|
||||||
|
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
|
||||||
|
public InfrastructureAdvisorAutoProxyCreator apc() {
|
||||||
|
InfrastructureAdvisorAutoProxyCreator apc = new InfrastructureAdvisorAutoProxyCreator();
|
||||||
|
apc.setProxyTargetClass((Boolean) this.enableTx.get("proxyTargetClass"));
|
||||||
|
return apc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue