下面列出了怎么用org.hibernate.resource.beans.container.spi.ContainedBean的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
@SuppressWarnings("unchecked")
public <B> ContainedBean<B> getBean(
Class<B> beanType, LifecycleOptions lifecycleOptions, BeanInstanceProducer fallbackProducer) {
SpringContainedBean<?> bean;
if (lifecycleOptions.canUseCachedReferences()) {
bean = this.beanCache.get(beanType);
if (bean == null) {
bean = createBean(beanType, lifecycleOptions, fallbackProducer);
this.beanCache.put(beanType, bean);
}
}
else {
bean = createBean(beanType, lifecycleOptions, fallbackProducer);
}
return (SpringContainedBean<B>) bean;
}
@Override
@SuppressWarnings("unchecked")
public <B> ContainedBean<B> getBean(
String name, Class<B> beanType, LifecycleOptions lifecycleOptions, BeanInstanceProducer fallbackProducer) {
SpringContainedBean<?> bean;
if (lifecycleOptions.canUseCachedReferences()) {
bean = this.beanCache.get(name);
if (bean == null) {
bean = createBean(name, beanType, lifecycleOptions, fallbackProducer);
this.beanCache.put(name, bean);
}
}
else {
bean = createBean(name, beanType, lifecycleOptions, fallbackProducer);
}
return (SpringContainedBean<B>) bean;
}
@Test
public void testCanRetrieveBeanByNameWithJpaCompliantOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
ContainedBean<MultiplePrototypesInSpringContextTestBean> bean = beanContainer.getBean(
"multiple-1", MultiplePrototypesInSpringContextTestBean.class,
JpaLifecycleOptions.INSTANCE, IneffectiveBeanInstanceProducer.INSTANCE
);
assertNotNull(bean);
MultiplePrototypesInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals("multiple-1", instance.getName());
assertSame(applicationContext, instance.getApplicationContext());
}
@Test
public void testCanRetrieveFallbackBeanByTypeWithJpaCompliantOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
NoDefinitionInSpringContextTestBeanInstanceProducer fallbackProducer = new NoDefinitionInSpringContextTestBeanInstanceProducer();
ContainedBean<NoDefinitionInSpringContextTestBean> bean = beanContainer.getBean(
NoDefinitionInSpringContextTestBean.class,
JpaLifecycleOptions.INSTANCE, fallbackProducer
);
assertEquals(1, fallbackProducer.currentUnnamedInstantiationCount());
assertEquals(0, fallbackProducer.currentNamedInstantiationCount());
assertNotNull(bean);
NoDefinitionInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals(BeanSource.FALLBACK, instance.getSource());
assertNull(instance.getApplicationContext());
}
@Test
public void testCanRetrieveFallbackBeanByNameWithJpaCompliantOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
NoDefinitionInSpringContextTestBeanInstanceProducer fallbackProducer = new NoDefinitionInSpringContextTestBeanInstanceProducer();
ContainedBean<NoDefinitionInSpringContextTestBean> bean = beanContainer.getBean(
"some name", NoDefinitionInSpringContextTestBean.class,
JpaLifecycleOptions.INSTANCE, fallbackProducer
);
assertEquals(0, fallbackProducer.currentUnnamedInstantiationCount());
assertEquals(1, fallbackProducer.currentNamedInstantiationCount());
assertNotNull(bean);
NoDefinitionInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals(BeanSource.FALLBACK, instance.getSource());
assertEquals("some name", instance.getName());
assertNull(instance.getApplicationContext());
}
@Test
public void testCanRetrieveFallbackBeanByTypeWithNativeOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
NoDefinitionInSpringContextTestBeanInstanceProducer fallbackProducer = new NoDefinitionInSpringContextTestBeanInstanceProducer();
ContainedBean<NoDefinitionInSpringContextTestBean> bean = beanContainer.getBean(
NoDefinitionInSpringContextTestBean.class,
NativeLifecycleOptions.INSTANCE, fallbackProducer
);
assertEquals(1, fallbackProducer.currentUnnamedInstantiationCount());
assertEquals(0, fallbackProducer.currentNamedInstantiationCount());
assertNotNull(bean);
NoDefinitionInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals(BeanSource.FALLBACK, instance.getSource());
assertNull(instance.getApplicationContext());
}
@Test
public void testCanRetrieveFallbackBeanByNameWithNativeOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
NoDefinitionInSpringContextTestBeanInstanceProducer fallbackProducer = new NoDefinitionInSpringContextTestBeanInstanceProducer();
ContainedBean<NoDefinitionInSpringContextTestBean> bean = beanContainer.getBean(
"some name", NoDefinitionInSpringContextTestBean.class,
NativeLifecycleOptions.INSTANCE, fallbackProducer
);
assertEquals(0, fallbackProducer.currentUnnamedInstantiationCount());
assertEquals(1, fallbackProducer.currentNamedInstantiationCount());
assertNotNull(bean);
NoDefinitionInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals(BeanSource.FALLBACK, instance.getSource());
assertEquals("some name", instance.getName());
assertNull(instance.getApplicationContext());
}
@Override
@SuppressWarnings("unchecked")
public <B> ContainedBean<B> getBean(
Class<B> beanType, LifecycleOptions lifecycleOptions, BeanInstanceProducer fallbackProducer) {
SpringContainedBean<?> bean;
if (lifecycleOptions.canUseCachedReferences()) {
bean = this.beanCache.get(beanType);
if (bean == null) {
bean = createBean(beanType, lifecycleOptions, fallbackProducer);
this.beanCache.put(beanType, bean);
}
}
else {
bean = createBean(beanType, lifecycleOptions, fallbackProducer);
}
return (SpringContainedBean<B>) bean;
}
@Override
@SuppressWarnings("unchecked")
public <B> ContainedBean<B> getBean(
String name, Class<B> beanType, LifecycleOptions lifecycleOptions, BeanInstanceProducer fallbackProducer) {
SpringContainedBean<?> bean;
if (lifecycleOptions.canUseCachedReferences()) {
bean = this.beanCache.get(name);
if (bean == null) {
bean = createBean(name, beanType, lifecycleOptions, fallbackProducer);
this.beanCache.put(name, bean);
}
}
else {
bean = createBean(name, beanType, lifecycleOptions, fallbackProducer);
}
return (SpringContainedBean<B>) bean;
}
@Test
public void testCanRetrieveBeanByTypeWithJpaCompliantOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
ContainedBean<SinglePrototypeInSpringContextTestBean> bean = beanContainer.getBean(
SinglePrototypeInSpringContextTestBean.class,
JpaLifecycleOptions.INSTANCE,
IneffectiveBeanInstanceProducer.INSTANCE
);
assertNotNull(bean);
SinglePrototypeInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertSame(applicationContext, instance.getApplicationContext());
}
@Test
public void testCanRetrieveBeanByNameWithJpaCompliantOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
ContainedBean<MultiplePrototypesInSpringContextTestBean> bean = beanContainer.getBean(
"multiple-1", MultiplePrototypesInSpringContextTestBean.class,
JpaLifecycleOptions.INSTANCE,
IneffectiveBeanInstanceProducer.INSTANCE
);
assertNotNull(bean);
MultiplePrototypesInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals("multiple-1", instance.getName());
assertSame(applicationContext, instance.getApplicationContext());
}
@Test
public void testCanRetrieveFallbackBeanByTypeWithJpaCompliantOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
NoDefinitionInSpringContextTestBeanInstanceProducer fallbackProducer = new NoDefinitionInSpringContextTestBeanInstanceProducer();
ContainedBean<NoDefinitionInSpringContextTestBean> bean = beanContainer.getBean(
NoDefinitionInSpringContextTestBean.class,
JpaLifecycleOptions.INSTANCE,
fallbackProducer
);
assertEquals(1, fallbackProducer.currentUnnamedInstantiationCount());
assertEquals(0, fallbackProducer.currentNamedInstantiationCount());
assertNotNull(bean);
NoDefinitionInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals(BeanSource.FALLBACK, instance.getSource());
assertNull(instance.getApplicationContext());
}
@Test
public void testCanRetrieveFallbackBeanByNameWithJpaCompliantOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
NoDefinitionInSpringContextTestBeanInstanceProducer fallbackProducer = new NoDefinitionInSpringContextTestBeanInstanceProducer();
ContainedBean<NoDefinitionInSpringContextTestBean> bean = beanContainer.getBean(
"some name", NoDefinitionInSpringContextTestBean.class,
JpaLifecycleOptions.INSTANCE,
fallbackProducer
);
assertEquals(0, fallbackProducer.currentUnnamedInstantiationCount());
assertEquals(1, fallbackProducer.currentNamedInstantiationCount());
assertNotNull(bean);
NoDefinitionInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals(BeanSource.FALLBACK, instance.getSource());
assertEquals("some name", instance.getName());
assertNull(instance.getApplicationContext());
}
@Test
public void testCanRetrieveFallbackBeanByTypeWithNativeOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
NoDefinitionInSpringContextTestBeanInstanceProducer fallbackProducer = new NoDefinitionInSpringContextTestBeanInstanceProducer();
ContainedBean<NoDefinitionInSpringContextTestBean> bean = beanContainer.getBean(
NoDefinitionInSpringContextTestBean.class,
NativeLifecycleOptions.INSTANCE,
fallbackProducer
);
assertEquals(1, fallbackProducer.currentUnnamedInstantiationCount());
assertEquals(0, fallbackProducer.currentNamedInstantiationCount());
assertNotNull(bean);
NoDefinitionInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals(BeanSource.FALLBACK, instance.getSource());
assertNull(instance.getApplicationContext());
}
@Test
public void testCanRetrieveFallbackBeanByNameWithNativeOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
NoDefinitionInSpringContextTestBeanInstanceProducer fallbackProducer = new NoDefinitionInSpringContextTestBeanInstanceProducer();
ContainedBean<NoDefinitionInSpringContextTestBean> bean = beanContainer.getBean(
"some name", NoDefinitionInSpringContextTestBean.class,
NativeLifecycleOptions.INSTANCE,
fallbackProducer
);
assertEquals(0, fallbackProducer.currentUnnamedInstantiationCount());
assertEquals(1, fallbackProducer.currentNamedInstantiationCount());
assertNotNull(bean);
NoDefinitionInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals(BeanSource.FALLBACK, instance.getSource());
assertEquals("some name", instance.getName());
assertNull(instance.getApplicationContext());
}
@Test
public void testCanRetrieveBeanByTypeWithJpaCompliantOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
ContainedBean<SinglePrototypeInSpringContextTestBean> bean = beanContainer.getBean(
SinglePrototypeInSpringContextTestBean.class,
JpaLifecycleOptions.INSTANCE, IneffectiveBeanInstanceProducer.INSTANCE
);
assertNotNull(bean);
SinglePrototypeInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertSame(applicationContext, instance.getApplicationContext());
}
@Test
public void testCanRetrieveBeanByTypeWithNativeOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
ContainedBean<SinglePrototypeInSpringContextTestBean> bean = beanContainer.getBean(
SinglePrototypeInSpringContextTestBean.class,
NativeLifecycleOptions.INSTANCE, IneffectiveBeanInstanceProducer.INSTANCE
);
assertNotNull(bean);
SinglePrototypeInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals("single", instance.getName());
assertSame(applicationContext, instance.getApplicationContext());
ContainedBean<SinglePrototypeInSpringContextTestBean> bean2 = beanContainer.getBean(
SinglePrototypeInSpringContextTestBean.class,
NativeLifecycleOptions.INSTANCE, IneffectiveBeanInstanceProducer.INSTANCE
);
assertNotNull(bean2);
SinglePrototypeInSpringContextTestBean instance2 = bean2.getBeanInstance();
assertNotNull(instance2);
// Due to the lifecycle options, and because the bean has the "prototype" scope, we should not return the same instance
assertNotSame(instance, instance2);
}
@Test
public void testCanRetrieveBeanByNameWithNativeOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
ContainedBean<MultiplePrototypesInSpringContextTestBean> bean = beanContainer.getBean(
"multiple-1", MultiplePrototypesInSpringContextTestBean.class,
NativeLifecycleOptions.INSTANCE, IneffectiveBeanInstanceProducer.INSTANCE
);
assertNotNull(bean);
MultiplePrototypesInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals("multiple-1", instance.getName());
assertSame(applicationContext, instance.getApplicationContext());
ContainedBean<MultiplePrototypesInSpringContextTestBean> bean2 = beanContainer.getBean(
"multiple-1", MultiplePrototypesInSpringContextTestBean.class,
NativeLifecycleOptions.INSTANCE, IneffectiveBeanInstanceProducer.INSTANCE
);
assertNotNull(bean2);
MultiplePrototypesInSpringContextTestBean instance2 = bean2.getBeanInstance();
assertNotNull(instance2);
// Due to the lifecycle options, and because the bean has the "prototype" scope, we should not return the same instance
assertNotSame(instance, instance2);
}
@Test
public void testCanRetrieveBeanByTypeWithNativeOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
ContainedBean<SinglePrototypeInSpringContextTestBean> bean = beanContainer.getBean(
SinglePrototypeInSpringContextTestBean.class,
NativeLifecycleOptions.INSTANCE,
IneffectiveBeanInstanceProducer.INSTANCE
);
assertNotNull(bean);
SinglePrototypeInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals("single", instance.getName());
assertSame(applicationContext, instance.getApplicationContext());
ContainedBean<SinglePrototypeInSpringContextTestBean> bean2 = beanContainer.getBean(
SinglePrototypeInSpringContextTestBean.class,
NativeLifecycleOptions.INSTANCE,
IneffectiveBeanInstanceProducer.INSTANCE
);
assertNotNull(bean2);
SinglePrototypeInSpringContextTestBean instance2 = bean2.getBeanInstance();
assertNotNull(instance2);
// Due to the lifecycle options, and because the bean has the "prototype" scope, we should not return the same instance
assertNotSame(instance, instance2);
}
@Test
public void testCanRetrieveBeanByNameWithNativeOptions() {
BeanContainer beanContainer = getBeanContainer();
assertNotNull(beanContainer);
ContainedBean<MultiplePrototypesInSpringContextTestBean> bean = beanContainer.getBean(
"multiple-1", MultiplePrototypesInSpringContextTestBean.class,
NativeLifecycleOptions.INSTANCE,
IneffectiveBeanInstanceProducer.INSTANCE
);
assertNotNull(bean);
MultiplePrototypesInSpringContextTestBean instance = bean.getBeanInstance();
assertNotNull(instance);
assertEquals("multiple-1", instance.getName());
assertSame(applicationContext, instance.getApplicationContext());
ContainedBean<MultiplePrototypesInSpringContextTestBean> bean2 = beanContainer.getBean(
"multiple-1", MultiplePrototypesInSpringContextTestBean.class,
NativeLifecycleOptions.INSTANCE,
IneffectiveBeanInstanceProducer.INSTANCE
);
assertNotNull(bean2);
MultiplePrototypesInSpringContextTestBean instance2 = bean2.getBeanInstance();
assertNotNull(instance2);
// Due to the lifecycle options, and because the bean has the "prototype" scope, we should not return the same instance
assertNotSame(instance, instance2);
}
@Override
@SuppressWarnings("unchecked")
public <T> ManagedBean<T> getBean(Class<T> beanClass) {
final ManagedBean existing = registrations.get( beanClass.getName() );
if ( existing != null ) {
return existing;
}
final ManagedBean bean;
if ( beanContainer == null ) {
bean = new FallbackContainedBean( beanClass, FallbackBeanInstanceProducer.INSTANCE );
}
else {
final ContainedBean<T> containedBean = beanContainer.getBean(
beanClass,
this,
FallbackBeanInstanceProducer.INSTANCE
);
if ( containedBean instanceof ManagedBean ) {
bean = (ManagedBean) containedBean;
}
else {
bean = new ContainedBeanManagedBeanAdapter( beanClass, containedBean );
}
}
registrations.put( beanClass.getName(), bean );
return bean;
}
@Override
@SuppressWarnings("unchecked")
public <T> ManagedBean<T> getBean(String beanName, Class<T> beanContract) {
final String key = beanContract.getName() + ':' + beanName;
final ManagedBean existing = registrations.get( key );
if ( existing != null ) {
return existing;
}
final ManagedBean bean;
if ( beanContainer == null ) {
bean = new FallbackContainedBean( beanName, beanContract, FallbackBeanInstanceProducer.INSTANCE );
}
else {
final ContainedBean<T> containedBean = beanContainer.getBean(
beanName,
beanContract,
this,
FallbackBeanInstanceProducer.INSTANCE
);
if ( containedBean instanceof ManagedBean ) {
bean = (ManagedBean) containedBean;
}
else {
bean = new ContainedBeanManagedBeanAdapter( beanContract, containedBean );
}
}
registrations.put( key, bean );
return bean;
}
@Override
public <B> ContainedBean<B> getBean(
Class<B> beanType,
LifecycleOptions lifecycleOptions,
BeanInstanceProducer fallbackProducer) {
// todo (5.3) : should this throw an exception instead?
return CdiBeanContainerExtendedAccessImpl.this.getBean( beanType, lifecycleOptions, fallbackProducer );
}
@Override
public <B> ContainedBean<B> getBean(
String beanName,
Class<B> beanType,
LifecycleOptions lifecycleOptions,
BeanInstanceProducer fallbackProducer) {
// todo (5.3) : should this throw an exception instead?
return CdiBeanContainerExtendedAccessImpl.this.getBean( beanName, beanType, lifecycleOptions, fallbackProducer );
}
private ContainedBeanManagedBeanAdapter(Class<B> beanClass, ContainedBean<B> containedBean) {
this.beanClass = beanClass;
this.containedBean = containedBean;
}