Repackaging to remove remaining cycles and increase cohesion
This commit is contained in:
parent
191b829a6c
commit
2689751c2b
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beansProjectDescription>
|
||||
<version>1</version>
|
||||
<pluginVersion><![CDATA[2.2.1.v200811281800]]></pluginVersion>
|
||||
<configSuffixes>
|
||||
<configSuffix><![CDATA[xml]]></configSuffix>
|
||||
</configSuffixes>
|
||||
<enableImports><![CDATA[false]]></enableImports>
|
||||
<configs>
|
||||
<config>src/test/java/test/basic/AutowiredConfigurationTests.xml</config>
|
||||
</configs>
|
||||
<configSets>
|
||||
</configSets>
|
||||
</beansProjectDescription>
|
||||
|
|
@ -24,6 +24,7 @@ import java.lang.annotation.Target;
|
|||
|
||||
import org.springframework.beans.factory.annotation.Autowire;
|
||||
import org.springframework.beans.factory.annotation.Required;
|
||||
import org.springframework.config.java.ext.Bean;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.config.java.annotation;
|
||||
package org.springframework.config.java.ext;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ import org.springframework.util.Assert;
|
|||
*
|
||||
* @author Chris Beams
|
||||
*/
|
||||
abstract class AbstractMethodInterceptor implements BeanFactoryAware, MethodInterceptor {
|
||||
public abstract class AbstractMethodInterceptor implements BeanFactoryAware, MethodInterceptor {
|
||||
protected final Log log = LogFactory.getLog(this.getClass());
|
||||
protected DefaultListableBeanFactory beanFactory;
|
||||
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.config.java.annotation;
|
||||
package org.springframework.config.java.ext;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
|
|
@ -26,10 +26,13 @@ import java.util.List;
|
|||
import org.springframework.beans.factory.annotation.Autowire;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.beans.factory.support.AbstractBeanDefinition;
|
||||
import org.springframework.config.java.annotation.Configuration;
|
||||
import org.springframework.config.java.model.ConfigurationClass;
|
||||
import org.springframework.config.java.model.ConfigurationModel;
|
||||
import org.springframework.config.java.model.Factory;
|
||||
import org.springframework.config.java.model.ModelMethod;
|
||||
import org.springframework.config.java.model.UsageError;
|
||||
import org.springframework.config.java.model.Validator;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.config.java.annotation;
|
||||
package org.springframework.config.java.ext;
|
||||
|
||||
import static java.lang.String.*;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package org.springframework.config.java.annotation;
|
||||
package org.springframework.config.java.ext;
|
||||
|
||||
import static java.lang.String.*;
|
||||
import static org.springframework.util.StringUtils.*;
|
||||
|
|
@ -13,6 +13,8 @@ import org.springframework.beans.factory.config.BeanDefinition;
|
|||
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||
import org.springframework.beans.factory.support.RootBeanDefinition;
|
||||
import org.springframework.config.java.annotation.Configuration;
|
||||
import org.springframework.config.java.model.BeanDefinitionRegistrar;
|
||||
import org.springframework.config.java.model.ConfigurationClass;
|
||||
import org.springframework.config.java.model.MalformedJavaConfigurationException;
|
||||
import org.springframework.config.java.model.ModelMethod;
|
||||
|
|
@ -40,8 +40,8 @@ import org.springframework.beans.factory.BeanFactoryAware;
|
|||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
||||
import org.springframework.config.java.annotation.BeanDefinitionRegistrar;
|
||||
import org.springframework.config.java.annotation.Configuration;
|
||||
import org.springframework.config.java.model.BeanDefinitionRegistrar;
|
||||
import org.springframework.config.java.model.ConfigurationClass;
|
||||
import org.springframework.config.java.model.ConfigurationModel;
|
||||
import org.springframework.config.java.model.ModelMethod;
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ package org.springframework.config.java.internal.enhancement;
|
|||
import java.lang.reflect.Method;
|
||||
|
||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||
import org.springframework.config.java.annotation.BeanDefinitionRegistrar;
|
||||
import org.springframework.config.java.model.BeanDefinitionRegistrar;
|
||||
import org.springframework.config.java.model.ModelMethod;
|
||||
|
||||
class InitializingBeanRegistrar implements BeanDefinitionRegistrar {
|
||||
|
|
|
|||
|
|
@ -33,9 +33,9 @@ import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
|||
import org.springframework.beans.factory.support.GenericBeanDefinition;
|
||||
import org.springframework.beans.factory.support.RootBeanDefinition;
|
||||
import org.springframework.config.java.annotation.Configuration;
|
||||
import org.springframework.config.java.annotation.Factory;
|
||||
import org.springframework.config.java.model.ConfigurationClass;
|
||||
import org.springframework.config.java.model.ConfigurationModel;
|
||||
import org.springframework.config.java.model.Factory;
|
||||
import org.springframework.config.java.model.ModelMethod;
|
||||
import org.springframework.config.java.plugin.Extension;
|
||||
import org.springframework.config.java.plugin.ExtensionAnnotationBeanDefinitionRegistrar;
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@ import org.objectweb.asm.Label;
|
|||
import org.objectweb.asm.MethodAdapter;
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.springframework.config.java.annotation.Configuration;
|
||||
import org.springframework.config.java.annotation.Factory;
|
||||
import org.springframework.config.java.model.ConfigurationClass;
|
||||
import org.springframework.config.java.model.Factory;
|
||||
import org.springframework.config.java.model.ModelClass;
|
||||
import org.springframework.config.java.model.ModelMethod;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
package org.springframework.config.java.annotation;
|
||||
package org.springframework.config.java.model;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||
import org.springframework.config.java.model.ModelMethod;
|
||||
|
||||
/**
|
||||
* Registers bean definition(s) for a particular method, usually based on its annotation metadata.
|
||||
|
|
@ -21,7 +21,6 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
import org.springframework.config.java.annotation.Configuration;
|
||||
import org.springframework.config.java.annotation.Validator;
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.springframework.config.java.annotation;
|
||||
package org.springframework.config.java.model;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
|
|
@ -28,9 +28,6 @@ import java.util.Set;
|
|||
import net.sf.cglib.proxy.Callback;
|
||||
import net.sf.cglib.proxy.NoOp;
|
||||
|
||||
import org.springframework.config.java.annotation.BeanDefinitionRegistrar;
|
||||
import org.springframework.config.java.annotation.Factory;
|
||||
import org.springframework.config.java.annotation.Validator;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
package org.springframework.config.java.annotation;
|
||||
package org.springframework.config.java.model;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.config.java.model.UsageError;
|
||||
|
||||
/** Marker interface */
|
||||
//TODO: SJC-242 document
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package test.basic;
|
||||
|
||||
import org.junit.Before;
|
||||
|
||||
public abstract class AbstractJavaConfigTests {
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
|
||||
}
|
||||
|
||||
//protected
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
package test.basic;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.config.java.annotation.Configuration;
|
||||
import org.springframework.config.java.ext.Bean;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
|
||||
import test.beans.Colour;
|
||||
import test.beans.TestBean;
|
||||
|
||||
public class AutowiredConfigurationTests {
|
||||
public @Test void test() {
|
||||
ClassPathXmlApplicationContext factory = new ClassPathXmlApplicationContext(
|
||||
AutowiredConfigurationTests.class.getSimpleName() + ".xml",
|
||||
AutowiredConfigurationTests.class);
|
||||
|
||||
assertThat(factory.getBean("colour", Colour.class), equalTo(Colour.RED));
|
||||
assertThat(factory.getBean("testBean", TestBean.class).getName(), equalTo(Colour.RED.toString()));
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class AutowiredConfig {
|
||||
private @Autowired Colour colour;
|
||||
|
||||
public @Bean TestBean testBean() {
|
||||
return new TestBean(colour.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class ColorConfig {
|
||||
public @Bean Colour colour() { return Colour.RED; }
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
|
||||
xmlns:context="http://www.springframework.org/schema/context">
|
||||
|
||||
<context:annotation-config/>
|
||||
|
||||
<bean class="org.springframework.config.java.process.ConfigurationPostProcessor"/>
|
||||
|
||||
<bean class="test.basic.AutowiredConfigurationTests$AutowiredConfig"/>
|
||||
<bean class="test.basic.AutowiredConfigurationTests$ColorConfig"/>
|
||||
</beans>
|
||||
|
|
@ -5,13 +5,12 @@ import static org.junit.Assert.*;
|
|||
import static org.springframework.beans.factory.support.BeanDefinitionBuilder.*;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.BeansException;
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
|
||||
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
||||
import org.springframework.config.java.annotation.Bean;
|
||||
import org.springframework.config.java.annotation.Configuration;
|
||||
import org.springframework.config.java.ext.Bean;
|
||||
import org.springframework.config.java.process.ConfigurationPostProcessor;
|
||||
import org.springframework.config.java.util.DefaultScopes;
|
||||
|
||||
|
|
@ -19,46 +18,54 @@ import test.beans.ITestBean;
|
|||
import test.beans.TestBean;
|
||||
|
||||
public class BasicTests {
|
||||
@Test
|
||||
public void test() {
|
||||
|
||||
/**
|
||||
* Creates a new {@link BeanFactory}, populates it with a {@link BeanDefinition} for
|
||||
* each of the given {@link Configuration} <var>configClasses</var>, and then post-processes
|
||||
* the factory using JavaConfig's {@link ConfigurationPostProcessor}. When complete,
|
||||
* the factory is ready to service requests for any {@link Bean} methods declared by
|
||||
* <var>configClasses</var>.
|
||||
*
|
||||
* @param configClasses the {@link Configuration} classes under test. may be an empty list.
|
||||
*
|
||||
* @return fully initialized and post-processed {@link BeanFactory}
|
||||
*/
|
||||
private static BeanFactory initBeanFactory(Class<?>... configClasses) {
|
||||
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
|
||||
factory.registerBeanDefinition("config", rootBeanDefinition(Config.class).getBeanDefinition());
|
||||
|
||||
Config config = factory.getBean("config", Config.class);
|
||||
assertThat(config, notNullValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test2() {
|
||||
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
|
||||
factory.registerBeanDefinition("config", rootBeanDefinition(Config.class).getBeanDefinition());
|
||||
|
||||
BeanFactoryPostProcessor bfpp = new MyPostProcessor();
|
||||
|
||||
bfpp.postProcessBeanFactory(factory);
|
||||
|
||||
OtherConfig config = factory.getBean("config", OtherConfig.class);
|
||||
assertThat(config, notNullValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test3() {
|
||||
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
|
||||
factory.registerBeanDefinition("config", rootBeanDefinition(Config.class).getBeanDefinition());
|
||||
for(Class<?> configClass : configClasses) {
|
||||
String configBeanName = configClass.getName();
|
||||
factory.registerBeanDefinition(configBeanName, rootBeanDefinition(configClass).getBeanDefinition());
|
||||
}
|
||||
|
||||
new ConfigurationPostProcessor().postProcessBeanFactory(factory);
|
||||
|
||||
factory.addBeanPostProcessor(new AutowiredAnnotationBeanPostProcessor());
|
||||
|
||||
return factory;
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void simplestPossibleConfiguration() {
|
||||
BeanFactory factory = initBeanFactory(SimplestPossibleConfig.class);
|
||||
|
||||
String stringBean = factory.getBean("stringBean", String.class);
|
||||
|
||||
assertThat(stringBean, equalTo("foo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test4() {
|
||||
DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
|
||||
factory.registerBeanDefinition("config", rootBeanDefinition(Config2.class).getBeanDefinition());
|
||||
@Configuration
|
||||
static class SimplestPossibleConfig {
|
||||
public @Bean String stringBean() {
|
||||
return "foo";
|
||||
}
|
||||
}
|
||||
|
||||
new ConfigurationPostProcessor().postProcessBeanFactory(factory);
|
||||
|
||||
@Test
|
||||
public void configurationWithPrototypeScopedBeans() {
|
||||
BeanFactory factory = initBeanFactory(ConfigWithPrototypeBean.class);
|
||||
|
||||
TestBean foo = factory.getBean("foo", TestBean.class);
|
||||
ITestBean bar = factory.getBean("bar", ITestBean.class);
|
||||
|
|
@ -67,44 +74,25 @@ public class BasicTests {
|
|||
assertThat(foo.getSpouse(), sameInstance(bar));
|
||||
assertThat(bar.getSpouse(), not(sameInstance(baz)));
|
||||
}
|
||||
}
|
||||
|
||||
class MyPostProcessor implements BeanFactoryPostProcessor {
|
||||
@Configuration
|
||||
static class ConfigWithPrototypeBean {
|
||||
public @Bean TestBean foo() {
|
||||
TestBean foo = new TestBean("foo");
|
||||
foo.setSpouse(bar());
|
||||
return foo;
|
||||
}
|
||||
|
||||
public void postProcessBeanFactory(
|
||||
ConfigurableListableBeanFactory beanFactory) throws BeansException {
|
||||
BeanDefinition beanDefinition = beanFactory.getBeanDefinition("config");
|
||||
beanDefinition.setBeanClassName(OtherConfig.class.getName());
|
||||
}
|
||||
public @Bean TestBean bar() {
|
||||
TestBean bar = new TestBean("bar");
|
||||
bar.setSpouse(baz());
|
||||
return bar;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
class Config {
|
||||
public @Bean String stringBean() {
|
||||
return "foo";
|
||||
@Bean(scope=DefaultScopes.PROTOTYPE)
|
||||
public TestBean baz() {
|
||||
return new TestBean("bar");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Configuration
|
||||
class Config2 {
|
||||
public @Bean TestBean foo() {
|
||||
TestBean foo = new TestBean("foo");
|
||||
foo.setSpouse(bar());
|
||||
return foo;
|
||||
}
|
||||
|
||||
public @Bean TestBean bar() {
|
||||
TestBean bar = new TestBean("bar");
|
||||
bar.setSpouse(baz());
|
||||
return bar;
|
||||
}
|
||||
|
||||
@Bean(scope=DefaultScopes.PROTOTYPE)
|
||||
public TestBean baz() {
|
||||
return new TestBean("bar");
|
||||
}
|
||||
}
|
||||
|
||||
class OtherConfig {
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue