use of org.springframework.beans.factory.FactoryBean in project spring-framework by spring-projects.
the class AutoProxyCreatorTests method testAutoProxyCreatorWithFactoryBeanAndPrototype.
@Test
public void testAutoProxyCreatorWithFactoryBeanAndPrototype() {
StaticApplicationContext sac = new StaticApplicationContext();
sac.registerSingleton("testAutoProxyCreator", TestAutoProxyCreator.class);
MutablePropertyValues pvs = new MutablePropertyValues();
pvs.add("singleton", "false");
sac.registerSingleton("prototypeFactoryToBeProxied", DummyFactory.class, pvs);
sac.refresh();
TestAutoProxyCreator tapc = (TestAutoProxyCreator) sac.getBean("testAutoProxyCreator");
tapc.testInterceptor.nrOfInvocations = 0;
FactoryBean<?> prototypeFactory = (FactoryBean<?>) sac.getBean("&prototypeFactoryToBeProxied");
assertThat(AopUtils.isCglibProxy(prototypeFactory)).isTrue();
TestBean tb = (TestBean) sac.getBean("prototypeFactoryToBeProxied");
assertThat(AopUtils.isCglibProxy(tb)).isTrue();
assertThat(tapc.testInterceptor.nrOfInvocations).isEqualTo(2);
tb.getAge();
assertThat(tapc.testInterceptor.nrOfInvocations).isEqualTo(3);
}
use of org.springframework.beans.factory.FactoryBean in project spring-framework by spring-projects.
the class AutoProxyCreatorTests method testAutoProxyCreatorWithFactoryBean.
@Test
public void testAutoProxyCreatorWithFactoryBean() {
StaticApplicationContext sac = new StaticApplicationContext();
sac.registerSingleton("testAutoProxyCreator", TestAutoProxyCreator.class);
sac.registerSingleton("singletonFactoryToBeProxied", DummyFactory.class);
sac.refresh();
TestAutoProxyCreator tapc = (TestAutoProxyCreator) sac.getBean("testAutoProxyCreator");
tapc.testInterceptor.nrOfInvocations = 0;
FactoryBean<?> factory = (FactoryBean<?>) sac.getBean("&singletonFactoryToBeProxied");
assertThat(AopUtils.isCglibProxy(factory)).isTrue();
TestBean tb = (TestBean) sac.getBean("singletonFactoryToBeProxied");
assertThat(AopUtils.isCglibProxy(tb)).isTrue();
assertThat(tapc.testInterceptor.nrOfInvocations).isEqualTo(2);
tb.getAge();
assertThat(tapc.testInterceptor.nrOfInvocations).isEqualTo(3);
}
use of org.springframework.beans.factory.FactoryBean in project spring-framework by spring-projects.
the class StaticListableBeanFactory method getBean.
// ---------------------------------------------------------------------
// Implementation of BeanFactory interface
// ---------------------------------------------------------------------
@Override
public Object getBean(String name) throws BeansException {
String beanName = BeanFactoryUtils.transformedBeanName(name);
Object bean = this.beans.get(beanName);
if (bean == null) {
throw new NoSuchBeanDefinitionException(beanName, "Defined beans are [" + StringUtils.collectionToCommaDelimitedString(this.beans.keySet()) + "]");
}
// bean factory if the bean isn't a factory
if (BeanFactoryUtils.isFactoryDereference(name) && !(bean instanceof FactoryBean)) {
throw new BeanIsNotAFactoryException(beanName, bean.getClass());
}
if (bean instanceof FactoryBean && !BeanFactoryUtils.isFactoryDereference(name)) {
try {
Object exposedObject = ((FactoryBean<?>) bean).getObject();
if (exposedObject == null) {
throw new BeanCreationException(beanName, "FactoryBean exposed null object");
}
return exposedObject;
} catch (Exception ex) {
throw new BeanCreationException(beanName, "FactoryBean threw exception on object creation", ex);
}
} else {
return bean;
}
}
use of org.springframework.beans.factory.FactoryBean in project spring-framework by spring-projects.
the class GroovyScriptFactoryTests method testRefreshableFactoryBean.
@Test
public void testRefreshableFactoryBean() {
ApplicationContext context = new ClassPathXmlApplicationContext("groovyContext.xml", getClass());
Object factory = context.getBean("&refreshableFactory");
boolean condition1 = factory instanceof FactoryBean;
assertThat(condition1).isTrue();
Object result = context.getBean("refreshableFactory");
boolean condition = result instanceof String;
assertThat(condition).isTrue();
assertThat(result).isEqualTo("test");
}
use of org.springframework.beans.factory.FactoryBean in project spring-framework by spring-projects.
the class GroovyScriptFactoryTests method testFactoryBean.
@Test
public void testFactoryBean() {
ApplicationContext context = new ClassPathXmlApplicationContext("groovyContext.xml", getClass());
Object factory = context.getBean("&factory");
boolean condition1 = factory instanceof FactoryBean;
assertThat(condition1).isTrue();
Object result = context.getBean("factory");
boolean condition = result instanceof String;
assertThat(condition).isTrue();
assertThat(result).isEqualTo("test");
}
Aggregations