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

项目:spring4-understanding    文件:ConfigurationClassProcessingTests.java   
/**
 * 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;
}
项目:class-guard    文件:InvalidConfigurationClassDefinitionTests.java   
@Test
public void configurationClassesMayNotBeFinal() {
    @Configuration
    final class Config { }

    BeanDefinition configBeanDef = rootBeanDefinition(Config.class).getBeanDefinition();
    DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
    beanFactory.registerBeanDefinition("config", configBeanDef);

    try {
        ConfigurationClassPostProcessor pp = new ConfigurationClassPostProcessor();
        pp.postProcessBeanFactory(beanFactory);
        fail("expected exception");
    }
    catch (BeanDefinitionParsingException ex) {
        assertTrue(ex.getMessage(), ex.getMessage().contains("Remove the final modifier"));
    }
}
项目: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;
}
项目:spring4-understanding    文件:DuplicateConfigurationClassPostProcessorTests.java   
@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();
}
项目:spring4-understanding    文件:ConfigurationClassAspectIntegrationTests.java   
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"));
}
项目: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;
}
项目: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));
}
项目: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"));
}
项目:spring4-understanding    文件:BeanAnnotationAttributePropagationTests.java   
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");
}
项目:class-guard    文件:ConfigurationClassProcessingTests.java   
/**
 * 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);
    return factory;
}
项目:class-guard    文件:ScopingTests.java   
private GenericApplicationContext createContext(org.springframework.beans.factory.config.Scope customScope, 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;
}
项目:class-guard    文件:DuplicateConfigurationClassPostProcessorTests.java   
@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();
}
项目:class-guard    文件:ConfigurationClassAspectIntegrationTests.java   
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"));
}
项目:class-guard    文件: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;
}
项目:class-guard    文件: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));
}
项目:class-guard    文件: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"));
}
项目:class-guard    文件:BeanAnnotationAttributePropagationTests.java   
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");
}