类org.springframework.context.annotation.ConfigurationClassPostProcessor源码实例Demo

下面列出了怎么用org.springframework.context.annotation.ConfigurationClassPostProcessor的API类实例代码及写法,或者点击链接到github查看源代码。

/**
 * 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 ConfigurationClassPostProcessor}.
 * When complete, the factory is ready to service requests for any {@link Bean} methods
 * declared by <var>configClasses</var>.
 */
private ListableBeanFactory initBeanFactory(Class<?>... configClasses) {
	DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
	for (Class<?> configClass : configClasses) {
		String configBeanName = configClass.getName();
		factory.registerBeanDefinition(configBeanName, new RootBeanDefinition(configClass));
	}
	ConfigurationClassPostProcessor ccpp = new ConfigurationClassPostProcessor();
	ccpp.postProcessBeanDefinitionRegistry(factory);
	ccpp.postProcessBeanFactory(factory);
	RequiredAnnotationBeanPostProcessor rapp = new RequiredAnnotationBeanPostProcessor();
	rapp.setBeanFactory(factory);
	factory.addBeanPostProcessor(rapp);
	factory.freezeConfiguration();
	return factory;
}
 
/**
 * Creates a new {@link BeanFactory}, populates it with a {@link BeanDefinition}
 * for each of the given {@link Configuration} {@code configClasses}, and then
 * post-processes the factory using JavaConfig's {@link ConfigurationClassPostProcessor}.
 * When complete, the factory is ready to service requests for any {@link Bean} methods
 * declared by {@code configClasses}.
 */
private DefaultListableBeanFactory initBeanFactory(Class<?>... configClasses) {
	DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
	for (Class<?> configClass : configClasses) {
		String configBeanName = configClass.getName();
		factory.registerBeanDefinition(configBeanName, new RootBeanDefinition(configClass));
	}
	ConfigurationClassPostProcessor ccpp = new ConfigurationClassPostProcessor();
	ccpp.postProcessBeanDefinitionRegistry(factory);
	ccpp.postProcessBeanFactory(factory);
	factory.freezeConfiguration();
	return factory;
}
 
@Test
public void repro() {
	GenericApplicationContext ctx = new GenericApplicationContext();
	ctx.registerBeanDefinition("a", new RootBeanDefinition(ConfigurationClassPostProcessor.class));
	ctx.registerBeanDefinition("b", new RootBeanDefinition(ConfigurationClassPostProcessor.class));
	ctx.registerBeanDefinition("myConfig", new RootBeanDefinition(Config.class));
	ctx.refresh();
}
 
private void assertAdviceWasApplied(Class<?> configClass) {
	DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
	new XmlBeanDefinitionReader(factory).loadBeanDefinitions(
			new ClassPathResource("aspectj-autoproxy-config.xml", ConfigurationClassAspectIntegrationTests.class));
	GenericApplicationContext ctx = new GenericApplicationContext(factory);
	ctx.addBeanFactoryPostProcessor(new ConfigurationClassPostProcessor());
	ctx.registerBeanDefinition("config", new RootBeanDefinition(configClass));
	ctx.refresh();

	TestBean testBean = ctx.getBean("testBean", TestBean.class);
	assertThat(testBean.getName(), equalTo("name"));
	testBean.absquatulate();
	assertThat(testBean.getName(), equalTo("advisedName"));
}
 
源代码5 项目: spring-analysis-note   文件: ImportTests.java
private DefaultListableBeanFactory processConfigurationClasses(Class<?>... classes) {
	DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
	for (Class<?> clazz : classes) {
		beanFactory.registerBeanDefinition(clazz.getSimpleName(), new RootBeanDefinition(clazz));
	}
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.postProcessBeanFactory(beanFactory);
	return beanFactory;
}
 
源代码6 项目: spring-analysis-note   文件: ImportTests.java
@Test
public void testProcessImportsWithAsm() {
	int configClasses = 2;
	int beansInClasses = 2;
	DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
	beanFactory.registerBeanDefinition("config", new RootBeanDefinition(ConfigurationWithImportAnnotation.class.getName()));
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.postProcessBeanFactory(beanFactory);
	assertThat(beanFactory.getBeanDefinitionCount(), equalTo(configClasses + beansInClasses));
}
 
源代码7 项目: spring-analysis-note   文件: ImportTests.java
@Test
public void testImportAnnotationWithMultipleArgumentsResultingInOverriddenBeanDefinition() {
	DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
	beanFactory.registerBeanDefinition("config", new RootBeanDefinition(
			WithMultipleArgumentsThatWillCauseDuplication.class));
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.postProcessBeanFactory(beanFactory);
	assertThat(beanFactory.getBeanDefinitionCount(), equalTo(4));
	assertThat(beanFactory.getBean("foo", ITestBean.class).getName(), equalTo("foo2"));
}
 
private AbstractBeanDefinition beanDef(Class<?> configClass) {
	DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
	factory.registerBeanDefinition("config", new RootBeanDefinition(configClass));
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.postProcessBeanFactory(factory);
	return (AbstractBeanDefinition) factory.getBeanDefinition("foo");
}
 
/**
 * Creates a new {@link BeanFactory}, populates it with a {@link BeanDefinition}
 * for each of the given {@link Configuration} {@code configClasses}, and then
 * post-processes the factory using JavaConfig's {@link ConfigurationClassPostProcessor}.
 * When complete, the factory is ready to service requests for any {@link Bean} methods
 * declared by {@code configClasses}.
 */
private DefaultListableBeanFactory initBeanFactory(Class<?>... configClasses) {
	DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
	for (Class<?> configClass : configClasses) {
		String configBeanName = configClass.getName();
		factory.registerBeanDefinition(configBeanName, new RootBeanDefinition(configClass));
	}
	ConfigurationClassPostProcessor ccpp = new ConfigurationClassPostProcessor();
	ccpp.postProcessBeanDefinitionRegistry(factory);
	ccpp.postProcessBeanFactory(factory);
	factory.freezeConfiguration();
	return factory;
}
 
@Test
public void repro() {
	GenericApplicationContext ctx = new GenericApplicationContext();
	ctx.registerBeanDefinition("a", new RootBeanDefinition(ConfigurationClassPostProcessor.class));
	ctx.registerBeanDefinition("b", new RootBeanDefinition(ConfigurationClassPostProcessor.class));
	ctx.registerBeanDefinition("myConfig", new RootBeanDefinition(Config.class));
	ctx.refresh();
}
 
private void assertAdviceWasApplied(Class<?> configClass) {
	DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
	new XmlBeanDefinitionReader(factory).loadBeanDefinitions(
			new ClassPathResource("aspectj-autoproxy-config.xml", ConfigurationClassAspectIntegrationTests.class));
	GenericApplicationContext ctx = new GenericApplicationContext(factory);
	ctx.addBeanFactoryPostProcessor(new ConfigurationClassPostProcessor());
	ctx.registerBeanDefinition("config", new RootBeanDefinition(configClass));
	ctx.refresh();

	TestBean testBean = ctx.getBean("testBean", TestBean.class);
	assertThat(testBean.getName(), equalTo("name"));
	testBean.absquatulate();
	assertThat(testBean.getName(), equalTo("advisedName"));
}
 
源代码12 项目: java-technology-stack   文件: ImportTests.java
private DefaultListableBeanFactory processConfigurationClasses(Class<?>... classes) {
	DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
	for (Class<?> clazz : classes) {
		beanFactory.registerBeanDefinition(clazz.getSimpleName(), new RootBeanDefinition(clazz));
	}
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.postProcessBeanFactory(beanFactory);
	return beanFactory;
}
 
源代码13 项目: java-technology-stack   文件: ImportTests.java
@Test
public void testProcessImportsWithAsm() {
	int configClasses = 2;
	int beansInClasses = 2;
	DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
	beanFactory.registerBeanDefinition("config", new RootBeanDefinition(ConfigurationWithImportAnnotation.class.getName()));
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.postProcessBeanFactory(beanFactory);
	assertThat(beanFactory.getBeanDefinitionCount(), equalTo(configClasses + beansInClasses));
}
 
源代码14 项目: java-technology-stack   文件: ImportTests.java
@Test
public void testImportAnnotationWithMultipleArgumentsResultingInOverriddenBeanDefinition() {
	DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
	beanFactory.registerBeanDefinition("config", new RootBeanDefinition(
			WithMultipleArgumentsThatWillCauseDuplication.class));
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.postProcessBeanFactory(beanFactory);
	assertThat(beanFactory.getBeanDefinitionCount(), equalTo(4));
	assertThat(beanFactory.getBean("foo", ITestBean.class).getName(), equalTo("foo2"));
}
 
private AbstractBeanDefinition beanDef(Class<?> configClass) {
	DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
	factory.registerBeanDefinition("config", new RootBeanDefinition(configClass));
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.postProcessBeanFactory(factory);
	return (AbstractBeanDefinition) factory.getBeanDefinition("foo");
}
 
源代码16 项目: spring4-understanding   文件: ScopingTests.java
private GenericApplicationContext createContext(Class<?> configClass) {
	DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
	if (customScope != null) {
		beanFactory.registerScope(SCOPE, customScope);
	}
	beanFactory.registerBeanDefinition("config", new RootBeanDefinition(configClass));
	GenericApplicationContext ctx = new GenericApplicationContext(beanFactory);
	ctx.addBeanFactoryPostProcessor(new ConfigurationClassPostProcessor());
	ctx.refresh();
	return ctx;
}
 
@Test
public void repro() {
	GenericApplicationContext ctx = new GenericApplicationContext();
	ctx.registerBeanDefinition("a", new RootBeanDefinition(ConfigurationClassPostProcessor.class));
	ctx.registerBeanDefinition("b", new RootBeanDefinition(ConfigurationClassPostProcessor.class));
	ctx.registerBeanDefinition("myConfig", new RootBeanDefinition(Config.class));
	ctx.refresh();
}
 
private void assertAdviceWasApplied(Class<?> configClass) {
	DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
	new XmlBeanDefinitionReader(factory).loadBeanDefinitions(
			new ClassPathResource("aspectj-autoproxy-config.xml", ConfigurationClassAspectIntegrationTests.class));
	GenericApplicationContext ctx = new GenericApplicationContext(factory);
	ctx.addBeanFactoryPostProcessor(new ConfigurationClassPostProcessor());
	ctx.registerBeanDefinition("config", new RootBeanDefinition(configClass));
	ctx.refresh();

	TestBean testBean = ctx.getBean("testBean", TestBean.class);
	assertThat(testBean.getName(), equalTo("name"));
	testBean.absquatulate();
	assertThat(testBean.getName(), equalTo("advisedName"));
}
 
源代码19 项目: spring4-understanding   文件: ImportTests.java
private DefaultListableBeanFactory processConfigurationClasses(Class<?>... classes) {
	DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
	for (Class<?> clazz : classes) {
		beanFactory.registerBeanDefinition(clazz.getSimpleName(), new RootBeanDefinition(clazz));
	}
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.postProcessBeanFactory(beanFactory);
	return beanFactory;
}
 
源代码20 项目: spring4-understanding   文件: ImportTests.java
@Test
public void testProcessImportsWithAsm() {
	int configClasses = 2;
	int beansInClasses = 2;
	DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
	beanFactory.registerBeanDefinition("config", new RootBeanDefinition(ConfigurationWithImportAnnotation.class.getName()));
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.postProcessBeanFactory(beanFactory);
	assertThat(beanFactory.getBeanDefinitionCount(), equalTo(configClasses + beansInClasses));
}
 
源代码21 项目: spring4-understanding   文件: ImportTests.java
@Test
public void testImportAnnotationWithMultipleArgumentsResultingInOverriddenBeanDefinition() {
	DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
	beanFactory.registerBeanDefinition("config", new RootBeanDefinition(
			WithMultipleArgumentsThatWillCauseDuplication.class));
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.postProcessBeanFactory(beanFactory);
	assertThat(beanFactory.getBeanDefinitionCount(), equalTo(4));
	assertThat(beanFactory.getBean("foo", ITestBean.class).getName(), equalTo("foo2"));
}
 
private AbstractBeanDefinition beanDef(Class<?> configClass) {
	DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
	factory.registerBeanDefinition("config", new RootBeanDefinition(configClass));
	ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
	pp.postProcessBeanFactory(factory);
	return (AbstractBeanDefinition) factory.getBeanDefinition("foo");
}
 
@Override
public void registry(List<PluginRegistryInfo> pluginRegistryInfos) throws Exception {
    ConfigurationClassPostProcessor configurationClassPostProcessor =
            applicationContext.getBean(ConfigurationClassPostProcessor.class);
    configurationClassPostProcessor.processConfigBeanDefinitions(applicationContext);
}
 
 同包方法