Polishing
This commit is contained in:
parent
70164cb145
commit
f39bb02628
|
@ -221,7 +221,6 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp
|
||||||
};
|
};
|
||||||
binding.setVariable("beans", beans);
|
binding.setVariable("beans", beans);
|
||||||
|
|
||||||
|
|
||||||
int countBefore = getRegistry().getBeanDefinitionCount();
|
int countBefore = getRegistry().getBeanDefinitionCount();
|
||||||
try {
|
try {
|
||||||
GroovyShell shell = new GroovyShell(getResourceLoader().getClassLoader(), binding);
|
GroovyShell shell = new GroovyShell(getResourceLoader().getClassLoader(), binding);
|
||||||
|
@ -239,11 +238,11 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines a set of beans for the given block or closure.
|
* Defines a set of beans for the given block or closure.
|
||||||
* @param c the block or closure
|
* @param closure the block or closure
|
||||||
* @return this GroovyBeanDefinitionReader instance
|
* @return this GroovyBeanDefinitionReader instance
|
||||||
*/
|
*/
|
||||||
public GroovyBeanDefinitionReader beans(Closure c) {
|
public GroovyBeanDefinitionReader beans(Closure closure) {
|
||||||
return invokeBeanDefiningClosure(c);
|
return invokeBeanDefiningClosure(closure);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -433,7 +432,7 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp
|
||||||
private GroovyBeanDefinitionWrapper invokeBeanDefiningMethod(String beanName, Object[] args) {
|
private GroovyBeanDefinitionWrapper invokeBeanDefiningMethod(String beanName, Object[] args) {
|
||||||
boolean hasClosureArgument = args[args.length - 1] instanceof Closure;
|
boolean hasClosureArgument = args[args.length - 1] instanceof Closure;
|
||||||
if (args[0] instanceof Class) {
|
if (args[0] instanceof Class) {
|
||||||
Class beanClass = (args[0] instanceof Class ? (Class) args[0] : args[0].getClass());
|
Class<?> beanClass = (args[0] instanceof Class ? (Class) args[0] : args[0].getClass());
|
||||||
if (args.length >= 1) {
|
if (args.length >= 1) {
|
||||||
if (hasClosureArgument) {
|
if (hasClosureArgument) {
|
||||||
if (args.length-1 != 1) {
|
if (args.length-1 != 1) {
|
||||||
|
@ -593,7 +592,7 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp
|
||||||
GroovyBeanDefinitionWrapper current = this.currentBeanDefinition;
|
GroovyBeanDefinitionWrapper current = this.currentBeanDefinition;
|
||||||
try {
|
try {
|
||||||
Closure callable = (Closure) value;
|
Closure callable = (Closure) value;
|
||||||
Class parameterType = callable.getParameterTypes()[0];
|
Class<?> parameterType = callable.getParameterTypes()[0];
|
||||||
if (parameterType.equals(Object.class)) {
|
if (parameterType.equals(Object.class)) {
|
||||||
this.currentBeanDefinition = new GroovyBeanDefinitionWrapper("");
|
this.currentBeanDefinition = new GroovyBeanDefinitionWrapper("");
|
||||||
callable.call(this.currentBeanDefinition);
|
callable.call(this.currentBeanDefinition);
|
||||||
|
@ -689,7 +688,7 @@ public class GroovyBeanDefinitionReader extends AbstractBeanDefinitionReader imp
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
private Object value;
|
public Object value;
|
||||||
|
|
||||||
public DeferredProperty(GroovyBeanDefinitionWrapper beanDefinition, String name, Object value) {
|
public DeferredProperty(GroovyBeanDefinitionWrapper beanDefinition, String name, Object value) {
|
||||||
this.beanDefinition = beanDefinition;
|
this.beanDefinition = beanDefinition;
|
||||||
|
|
|
@ -22,6 +22,7 @@ import java.util.Arrays;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
import org.springframework.aop.scope.ScopedProxyFactoryBean;
|
import org.springframework.aop.scope.ScopedProxyFactoryBean;
|
||||||
import org.springframework.asm.Type;
|
import org.springframework.asm.Type;
|
||||||
import org.springframework.beans.factory.BeanFactory;
|
import org.springframework.beans.factory.BeanFactory;
|
||||||
|
@ -57,8 +58,6 @@ import org.springframework.util.ReflectionUtils;
|
||||||
*/
|
*/
|
||||||
class ConfigurationClassEnhancer {
|
class ConfigurationClassEnhancer {
|
||||||
|
|
||||||
private static final Log logger = LogFactory.getLog(ConfigurationClassEnhancer.class);
|
|
||||||
|
|
||||||
private static final Callback[] CALLBACKS = new Callback[] {
|
private static final Callback[] CALLBACKS = new Callback[] {
|
||||||
new BeanMethodInterceptor(),
|
new BeanMethodInterceptor(),
|
||||||
new DisposableBeanMethodInterceptor(),
|
new DisposableBeanMethodInterceptor(),
|
||||||
|
@ -66,12 +65,13 @@ class ConfigurationClassEnhancer {
|
||||||
NoOp.INSTANCE
|
NoOp.INSTANCE
|
||||||
};
|
};
|
||||||
|
|
||||||
private static final ConditionalCallbackFilter CALLBACK_FILTER =
|
private static final ConditionalCallbackFilter CALLBACK_FILTER = new ConditionalCallbackFilter(CALLBACKS);
|
||||||
new ConditionalCallbackFilter(CALLBACKS);
|
|
||||||
|
|
||||||
|
|
||||||
private static final String BEAN_FACTORY_FIELD = "$$beanFactory";
|
private static final String BEAN_FACTORY_FIELD = "$$beanFactory";
|
||||||
|
|
||||||
|
private static final Log logger = LogFactory.getLog(ConfigurationClassEnhancer.class);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the specified class and generates a CGLIB subclass of it equipped with
|
* Loads the specified class and generates a CGLIB subclass of it equipped with
|
||||||
* container-aware callbacks capable of respecting scoping and other bean semantics.
|
* container-aware callbacks capable of respecting scoping and other bean semantics.
|
||||||
|
@ -125,12 +125,13 @@ class ConfigurationClassEnhancer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Uses enhancer to generate a subclass of superclass, ensuring that
|
* Uses enhancer to generate a subclass of superclass,
|
||||||
* {@link #callbackInstances} are registered for the new subclass.
|
* ensuring that callbacks are registered for the new subclass.
|
||||||
*/
|
*/
|
||||||
private Class<?> createClass(Enhancer enhancer) {
|
private Class<?> createClass(Enhancer enhancer) {
|
||||||
Class<?> subclass = enhancer.createClass();
|
Class<?> subclass = enhancer.createClass();
|
||||||
// registering callbacks statically (as opposed to threadlocal) is critical for usage in an OSGi env (SPR-5932)
|
// Registering callbacks statically (as opposed to thread-local)
|
||||||
|
// is critical for usage in an OSGi environment (SPR-5932)...
|
||||||
Enhancer.registerStaticCallbacks(subclass, CALLBACKS);
|
Enhancer.registerStaticCallbacks(subclass, CALLBACKS);
|
||||||
return subclass;
|
return subclass;
|
||||||
}
|
}
|
||||||
|
@ -162,6 +163,7 @@ class ConfigurationClassEnhancer {
|
||||||
boolean isMatch(Method candidateMethod);
|
boolean isMatch(Method candidateMethod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A {@link CallbackFilter} that works by interrogating {@link Callback}s in the order
|
* A {@link CallbackFilter} that works by interrogating {@link Callback}s in the order
|
||||||
* that they are defined via {@link ConditionalCallback}.
|
* that they are defined via {@link ConditionalCallback}.
|
||||||
|
@ -197,14 +199,14 @@ class ConfigurationClassEnhancer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Intercepts the invocation of any {@link DisposableBean#destroy()} on @Configuration
|
* Intercepts the invocation of any {@link DisposableBean#destroy()} on @Configuration
|
||||||
* class instances for the purpose of de-registering CGLIB callbacks. This helps avoid
|
* class instances for the purpose of de-registering CGLIB callbacks. This helps avoid
|
||||||
* garbage collection issues. See SPR-7901.
|
* garbage collection issues. See SPR-7901.
|
||||||
* @see EnhancedConfiguration
|
* @see EnhancedConfiguration
|
||||||
*/
|
*/
|
||||||
private static class DisposableBeanMethodInterceptor implements MethodInterceptor,
|
private static class DisposableBeanMethodInterceptor implements MethodInterceptor, ConditionalCallback {
|
||||||
ConditionalCallback {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isMatch(Method candidateMethod) {
|
public boolean isMatch(Method candidateMethod) {
|
||||||
|
@ -231,23 +233,20 @@ class ConfigurationClassEnhancer {
|
||||||
* Intercepts the invocation of any
|
* Intercepts the invocation of any
|
||||||
* {@link BeanFactoryAware#setBeanFactory(BeanFactory)} on {@code @Configuration}
|
* {@link BeanFactoryAware#setBeanFactory(BeanFactory)} on {@code @Configuration}
|
||||||
* class instances for the purpose of recording the {@link BeanFactory}.
|
* class instances for the purpose of recording the {@link BeanFactory}.
|
||||||
*
|
|
||||||
* @see EnhancedConfiguration
|
* @see EnhancedConfiguration
|
||||||
*/
|
*/
|
||||||
private static class BeanFactoryAwareMethodInterceptor implements MethodInterceptor,
|
private static class BeanFactoryAwareMethodInterceptor implements MethodInterceptor, ConditionalCallback {
|
||||||
ConditionalCallback {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isMatch(Method candidateMethod) {
|
public boolean isMatch(Method candidateMethod) {
|
||||||
return candidateMethod.getName().equals("setBeanFactory")
|
return candidateMethod.getName().equals("setBeanFactory") &&
|
||||||
&& candidateMethod.getParameterTypes().length == 1
|
candidateMethod.getParameterTypes().length == 1 &&
|
||||||
&& candidateMethod.getParameterTypes()[0].equals(BeanFactory.class)
|
candidateMethod.getParameterTypes()[0].equals(BeanFactory.class) &&
|
||||||
&& BeanFactoryAware.class.isAssignableFrom(candidateMethod.getDeclaringClass());
|
BeanFactoryAware.class.isAssignableFrom(candidateMethod.getDeclaringClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object intercept(Object obj, Method method, Object[] args,
|
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
|
||||||
MethodProxy proxy) throws Throwable {
|
|
||||||
Field field = obj.getClass().getDeclaredField(BEAN_FACTORY_FIELD);
|
Field field = obj.getClass().getDeclaredField(BEAN_FACTORY_FIELD);
|
||||||
Assert.state(field != null, "Unable to find generated bean factory field");
|
Assert.state(field != null, "Unable to find generated bean factory field");
|
||||||
field.set(obj, args[0]);
|
field.set(obj, args[0]);
|
||||||
|
@ -396,8 +395,7 @@ class ConfigurationClassEnhancer {
|
||||||
enhancer.setUseFactory(false);
|
enhancer.setUseFactory(false);
|
||||||
enhancer.setCallback(new MethodInterceptor() {
|
enhancer.setCallback(new MethodInterceptor() {
|
||||||
@Override
|
@Override
|
||||||
public Object intercept(Object obj, Method method, Object[] args,
|
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
|
||||||
MethodProxy proxy) throws Throwable {
|
|
||||||
if (method.getName().equals("getObject") && args.length == 0) {
|
if (method.getName().equals("getObject") && args.length == 0) {
|
||||||
return beanFactory.getBean(beanName);
|
return beanFactory.getBean(beanName);
|
||||||
}
|
}
|
||||||
|
@ -411,8 +409,8 @@ class ConfigurationClassEnhancer {
|
||||||
Field field = ReflectionUtils.findField(enhancedConfigInstance.getClass(), BEAN_FACTORY_FIELD);
|
Field field = ReflectionUtils.findField(enhancedConfigInstance.getClass(), BEAN_FACTORY_FIELD);
|
||||||
Assert.state(field != null, "Unable to find generated bean factory field");
|
Assert.state(field != null, "Unable to find generated bean factory field");
|
||||||
Object beanFactory = ReflectionUtils.getField(field, enhancedConfigInstance);
|
Object beanFactory = ReflectionUtils.getField(field, enhancedConfigInstance);
|
||||||
Assert.state(beanFactory != null, "The BeanFactory has not been injected into the @Configuration class");
|
Assert.state(beanFactory != null, "BeanFactory has not been injected into @Configuration class");
|
||||||
Assert.state(beanFactory instanceof ConfigurableBeanFactory, "The injected BeanFactory is not a ConfigurableBeanFactory");
|
Assert.state(beanFactory instanceof ConfigurableBeanFactory, "Injected BeanFactory is not a ConfigurableBeanFactory");
|
||||||
return (ConfigurableBeanFactory) beanFactory;
|
return (ConfigurableBeanFactory) beanFactory;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2012 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -25,6 +25,7 @@ import org.springframework.context.annotation.ImportAware;
|
||||||
import org.springframework.core.annotation.AnnotationAttributes;
|
import org.springframework.core.annotation.AnnotationAttributes;
|
||||||
import org.springframework.core.type.AnnotationMetadata;
|
import org.springframework.core.type.AnnotationMetadata;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract base {@code Configuration} class providing common structure for enabling
|
* Abstract base {@code Configuration} class providing common structure for enabling
|
||||||
|
@ -38,15 +39,16 @@ import org.springframework.util.Assert;
|
||||||
public abstract class AbstractAsyncConfiguration implements ImportAware {
|
public abstract class AbstractAsyncConfiguration implements ImportAware {
|
||||||
|
|
||||||
protected AnnotationAttributes enableAsync;
|
protected AnnotationAttributes enableAsync;
|
||||||
|
|
||||||
protected Executor executor;
|
protected Executor executor;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setImportMetadata(AnnotationMetadata importMetadata) {
|
public void setImportMetadata(AnnotationMetadata importMetadata) {
|
||||||
this.enableAsync = AnnotationAttributes.fromMap(
|
this.enableAsync = AnnotationAttributes.fromMap(
|
||||||
importMetadata.getAnnotationAttributes(EnableAsync.class.getName(), false));
|
importMetadata.getAnnotationAttributes(EnableAsync.class.getName(), false));
|
||||||
Assert.notNull(this.enableAsync,
|
Assert.notNull(this.enableAsync,
|
||||||
"@EnableAsync is not present on importing class " +
|
"@EnableAsync is not present on importing class " + importMetadata.getClassName());
|
||||||
importMetadata.getClassName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -54,14 +56,12 @@ public abstract class AbstractAsyncConfiguration implements ImportAware {
|
||||||
*/
|
*/
|
||||||
@Autowired(required = false)
|
@Autowired(required = false)
|
||||||
void setConfigurers(Collection<AsyncConfigurer> configurers) {
|
void setConfigurers(Collection<AsyncConfigurer> configurers) {
|
||||||
if (configurers == null || configurers.isEmpty()) {
|
if (CollectionUtils.isEmpty(configurers)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (configurers.size() > 1) {
|
if (configurers.size() > 1) {
|
||||||
throw new IllegalStateException("only one AsyncConfigurer may exist");
|
throw new IllegalStateException("Only one AsyncConfigurer may exist");
|
||||||
}
|
}
|
||||||
|
|
||||||
AsyncConfigurer configurer = configurers.iterator().next();
|
AsyncConfigurer configurer = configurers.iterator().next();
|
||||||
this.executor = configurer.getAsyncExecutor();
|
this.executor = configurer.getAsyncExecutor();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2011 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -41,7 +41,7 @@ package org.springframework.core.env;
|
||||||
* instance available from {@link #getPropertySources()}. See
|
* instance available from {@link #getPropertySources()}. See
|
||||||
* {@link ConfigurableEnvironment} Javadoc for usage examples.
|
* {@link ConfigurableEnvironment} Javadoc for usage examples.
|
||||||
*
|
*
|
||||||
* <p>See {@link SystemEnvironmentPropertySource} Javadoc for details on special handling
|
* <p>See {@link SystemEnvironmentPropertySource} javadoc for details on special handling
|
||||||
* of property names in shell environments (e.g. Bash) that disallow period characters in
|
* of property names in shell environments (e.g. Bash) that disallow period characters in
|
||||||
* variable names.
|
* variable names.
|
||||||
*
|
*
|
||||||
|
@ -61,8 +61,8 @@ public class StandardEnvironment extends AbstractEnvironment {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Customize the set of property sources with those appropriate for any standard Java
|
* Customize the set of property sources with those appropriate for any standard
|
||||||
* environment:
|
* Java environment:
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>{@value #SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME}
|
* <li>{@value #SYSTEM_PROPERTIES_PROPERTY_SOURCE_NAME}
|
||||||
* <li>{@value #SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME}
|
* <li>{@value #SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2012 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -25,6 +25,7 @@ import org.springframework.core.annotation.AnnotationAttributes;
|
||||||
import org.springframework.core.type.AnnotationMetadata;
|
import org.springframework.core.type.AnnotationMetadata;
|
||||||
import org.springframework.transaction.PlatformTransactionManager;
|
import org.springframework.transaction.PlatformTransactionManager;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract base {@code @Configuration} class providing common structure for enabling
|
* Abstract base {@code @Configuration} class providing common structure for enabling
|
||||||
|
@ -38,27 +39,26 @@ import org.springframework.util.Assert;
|
||||||
public abstract class AbstractTransactionManagementConfiguration implements ImportAware {
|
public abstract class AbstractTransactionManagementConfiguration implements ImportAware {
|
||||||
|
|
||||||
protected AnnotationAttributes enableTx;
|
protected AnnotationAttributes enableTx;
|
||||||
|
|
||||||
protected PlatformTransactionManager txManager;
|
protected PlatformTransactionManager txManager;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setImportMetadata(AnnotationMetadata importMetadata) {
|
public void setImportMetadata(AnnotationMetadata importMetadata) {
|
||||||
this.enableTx = AnnotationAttributes.fromMap(
|
this.enableTx = AnnotationAttributes.fromMap(
|
||||||
importMetadata.getAnnotationAttributes(EnableTransactionManagement.class.getName(), false));
|
importMetadata.getAnnotationAttributes(EnableTransactionManagement.class.getName(), false));
|
||||||
Assert.notNull(this.enableTx,
|
Assert.notNull(this.enableTx,
|
||||||
"@EnableTransactionManagement is not present on importing class " +
|
"@EnableTransactionManagement is not present on importing class " + importMetadata.getClassName());
|
||||||
importMetadata.getClassName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Autowired(required=false)
|
@Autowired(required=false)
|
||||||
void setConfigurers(Collection<TransactionManagementConfigurer> configurers) {
|
void setConfigurers(Collection<TransactionManagementConfigurer> configurers) {
|
||||||
if (configurers == null || configurers.isEmpty()) {
|
if (CollectionUtils.isEmpty(configurers)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (configurers.size() > 1) {
|
if (configurers.size() > 1) {
|
||||||
throw new IllegalStateException("only one TransactionManagementConfigurer may exist");
|
throw new IllegalStateException("Only one TransactionManagementConfigurer may exist");
|
||||||
}
|
}
|
||||||
|
|
||||||
TransactionManagementConfigurer configurer = configurers.iterator().next();
|
TransactionManagementConfigurer configurer = configurers.iterator().next();
|
||||||
this.txManager = configurer.annotationDrivenTransactionManager();
|
this.txManager = configurer.annotationDrivenTransactionManager();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2011 the original author or authors.
|
* Copyright 2002-2013 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -45,13 +45,12 @@ public class TransactionManagementConfigurationSelector
|
||||||
protected String[] selectImports(AdviceMode adviceMode) {
|
protected String[] selectImports(AdviceMode adviceMode) {
|
||||||
switch (adviceMode) {
|
switch (adviceMode) {
|
||||||
case PROXY:
|
case PROXY:
|
||||||
return new String[] { AutoProxyRegistrar.class.getName(), ProxyTransactionManagementConfiguration.class.getName() };
|
return new String[] {AutoProxyRegistrar.class.getName(), ProxyTransactionManagementConfiguration.class.getName()};
|
||||||
case ASPECTJ:
|
case ASPECTJ:
|
||||||
return new String[] { TransactionManagementConfigUtils.TRANSACTION_ASPECT_CONFIGURATION_CLASS_NAME };
|
return new String[] {TransactionManagementConfigUtils.TRANSACTION_ASPECT_CONFIGURATION_CLASS_NAME};
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue