Package org.springframework.orm.hibernate5

# Class SpringBeanContainer

java.lang.Object
org.springframework.orm.hibernate5.SpringBeanContainer

All Implemented Interfaces:
  `BeanContainer`, `Stoppable`

public final class SpringBeanContainer extends Object implements BeanContainer
Spring's implementation of Hibernate's `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, for example:

     <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: The Hibernate `SessionFactory` will natively expose the JPA `EntityManagerFactory` interface as well, and Hibernate `BeanContainer` integration will be registered out of the box.

Since:
  5.1
Author:
  Juergen Hoeller
See Also:
  - `LocalSessionFactoryBean.setBeanFactory(org.springframework.beans.factory.BeanFactory)`
  - `LocalSessionFactoryBuilder.setBeanContainer(org.springframework.beans.factory.config.ConfigurableListableBeanFactory)`
  - `AbstractEntityManagerFactoryBean.setJpaPropertyMap(java.util.Map<java.lang.String, ?>)`
  - `AvailableSettings.BEAN_CONTAINER`

## Nested Class Summary

## Nested classes/interfaces inherited from interface org.hibernate.resource.beans.container.spi.BeanContainer

`BeanContainer.LifecycleOptions`

## Constructor Summary

Constructors
Constructor
Description
`SpringBeanContainer(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)`
Instantiate a new SpringBeanContainer for the given bean factory.

## Method Summary

Modifier and Type
Method
Description
`<B> ContainedBean<B>`
`getBean(Class<B> beanType, BeanContainer.LifecycleOptions lifecycleOptions, BeanInstanceProducer fallbackProducer)`
`<B> ContainedBean<B>`
`getBean(String name, Class<B> beanType, BeanContainer.LifecycleOptions lifecycleOptions, BeanInstanceProducer fallbackProducer)`
`void`
`stop()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### SpringBeanContainer

public SpringBeanContainer(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
Instantiate a new SpringBeanContainer for the given bean factory.

Parameters:
  `beanFactory` - the Spring bean factory to delegate to

## Method Details

### getBean

public <B> ContainedBean<B> getBean(Class<B> beanType, BeanContainer.LifecycleOptions lifecycleOptions, BeanInstanceProducer fallbackProducer)

Specified by:
  `getBean` in interface `BeanContainer`

### getBean

public <B> ContainedBean<B> getBean(String name, Class<B> beanType, BeanContainer.LifecycleOptions lifecycleOptions, BeanInstanceProducer fallbackProducer)

Specified by:
  `getBean` in interface `BeanContainer`

### stop

public void stop()

Specified by:
  `stop` in interface `Stoppable`