List of usage examples for org.springframework.beans.factory SmartFactoryBean SmartFactoryBean
SmartFactoryBean
From source file:com.fitbur.testify.fixture.PostgresDockerConfig.java
@Bean
FactoryBean<SessionFactory> sessionFactoryImplProvider(DataSource dataSource) {
return new SmartFactoryBean<SessionFactory>() {
@Override/* www. java 2s. co m*/
public boolean isPrototype() {
return false;
}
@Override
public boolean isEagerInit() {
return true;
}
@Override
public SessionFactory getObject() throws Exception {
StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.loadProperties("hibernate.properties").applySetting(Environment.DATASOURCE, dataSource)
.build();
Reflections reflections = new Reflections(PostgresDockerConfig.class.getPackage().getName());
MetadataSources metadataSources = new MetadataSources(registry);
MetadataBuilder metadataBuilder = metadataSources.getMetadataBuilder()
.applyPhysicalNamingStrategy(new PhysicalNamingStrategyStandardImpl())
.applyImplicitNamingStrategy(new ImplicitNamingStrategyComponentPathImpl());
reflections.getSubTypesOf(AttributeConverter.class).parallelStream()
.forEach(metadataBuilder::applyAttributeConverter);
reflections.getTypesAnnotatedWith(Entity.class).parallelStream()
.forEach(metadataSources::addAnnotatedClass);
Metadata metadata = metadataBuilder.build();
return metadata.buildSessionFactory();
}
@Override
public Class<?> getObjectType() {
return SessionFactory.class;
}
@Override
public boolean isSingleton() {
return true;
}
};
}