public final class SpringBeanContainer
extends java.lang.Object
BeanContainer
SPI,
delegating to a Spring ConfigurableListableBeanFactory
.
Auto-configured by LocalSessionFactoryBean.setBeanFactory(org.springframework.beans.factory.BeanFactory)
,
programmatically supported via LocalSessionFactoryBuilder.setBeanContainer(org.springframework.beans.factory.config.ConfigurableListableBeanFactory)
,
and manually configurable through a "hibernate.resource.beans.container" entry
in JPA properties, e.g.:
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> ... <property name="jpaPropertyMap"> <map> <entry key="hibernate.resource.beans.container"> <bean class="org.springframework.orm.hibernate5.SpringBeanContainer"/> </entry> </map> </property> </bean>Or in Java-based JPA configuration:
LocalContainerEntityManagerFactoryBean emfb = ... emfb.getJpaPropertyMap().put(AvailableSettings.BEAN_CONTAINER, new SpringBeanContainer(beanFactory));Please note that Spring's
LocalSessionFactoryBean
is an immediate alternative
to LocalContainerEntityManagerFactoryBean
for common
JPA purposes: In particular with Hibernate 5.3, the Hibernate SessionFactory
will natively expose the JPA EntityManagerFactory
interface as well, and
Hibernate BeanContainer
integration will be registered out of the box.LocalSessionFactoryBean.setBeanFactory(org.springframework.beans.factory.BeanFactory)
,
LocalSessionFactoryBuilder.setBeanContainer(org.springframework.beans.factory.config.ConfigurableListableBeanFactory)
,
AbstractEntityManagerFactoryBean.setJpaPropertyMap(java.util.Map<java.lang.String, ?>)
,
org.hibernate.cfg.AvailableSettings#BEAN_CONTAINER
Modifier and Type | Class and Description |
---|---|
private static class |
SpringBeanContainer.SpringContainedBean<B> |
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.Object,SpringBeanContainer.SpringContainedBean<?>> |
beanCache |
private ConfigurableListableBeanFactory |
beanFactory |
private static Log |
logger |
Constructor and Description |
---|
SpringBeanContainer(ConfigurableListableBeanFactory beanFactory)
Instantiate a new SpringBeanContainer for the given bean factory.
|
Modifier and Type | Method and Description |
---|---|
private SpringBeanContainer.SpringContainedBean<?> |
createBean(java.lang.Class<?> beanType,
LifecycleOptions lifecycleOptions,
BeanInstanceProducer fallbackProducer) |
private SpringBeanContainer.SpringContainedBean<?> |
createBean(java.lang.String name,
java.lang.Class<?> beanType,
LifecycleOptions lifecycleOptions,
BeanInstanceProducer fallbackProducer) |
<B> <any> |
getBean(java.lang.Class<B> beanType,
LifecycleOptions lifecycleOptions,
BeanInstanceProducer fallbackProducer) |
<B> <any> |
getBean(java.lang.String name,
java.lang.Class<B> beanType,
LifecycleOptions lifecycleOptions,
BeanInstanceProducer fallbackProducer) |
void |
stop() |
private static final Log logger
private final ConfigurableListableBeanFactory beanFactory
private final java.util.Map<java.lang.Object,SpringBeanContainer.SpringContainedBean<?>> beanCache
public SpringBeanContainer(ConfigurableListableBeanFactory beanFactory)
beanFactory
- the Spring bean factory to delegate topublic <B> <any> getBean(java.lang.Class<B> beanType, LifecycleOptions lifecycleOptions, BeanInstanceProducer fallbackProducer)
public <B> <any> getBean(java.lang.String name, java.lang.Class<B> beanType, LifecycleOptions lifecycleOptions, BeanInstanceProducer fallbackProducer)
public void stop()
private SpringBeanContainer.SpringContainedBean<?> createBean(java.lang.Class<?> beanType, LifecycleOptions lifecycleOptions, BeanInstanceProducer fallbackProducer)
private SpringBeanContainer.SpringContainedBean<?> createBean(java.lang.String name, java.lang.Class<?> beanType, LifecycleOptions lifecycleOptions, BeanInstanceProducer fallbackProducer)