in grails-datastore-gorm-hibernate/src/main/groovy/org/grails/orm/hibernate/support/HibernateDatastoreConnectionSourcesRegistrar.groovy [37:88]
void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
for(String dataSourceName in dataSourceNames) {
boolean isDefault = dataSourceName == ConnectionSource.DEFAULT || dataSourceName == Settings.SETTING_DATASOURCE
boolean shouldConfigureDataSourceBean = GrailsVersion.isAtLeastMajorMinor(3,3)
String dataSourceBeanName = isDefault ? Settings.SETTING_DATASOURCE : "${Settings.SETTING_DATASOURCE}_$dataSourceName"
if(!registry.containsBeanDefinition(dataSourceBeanName) && shouldConfigureDataSourceBean) {
def dataSourceBean = new RootBeanDefinition()
dataSourceBean.setTargetType(DataSource)
dataSourceBean.setBeanClass(InstanceFactoryBean)
def args = new ConstructorArgumentValues()
String spel = "#{dataSourceConnectionSourceFactory.create('$dataSourceName', environment).source}".toString()
args.addGenericArgumentValue(spel)
dataSourceBean.setConstructorArgumentValues(
args
)
registry.registerBeanDefinition(dataSourceBeanName, dataSourceBean)
}
if(!isDefault) {
String suffix = '_' + dataSourceName
String sessionFactoryName = "sessionFactory$suffix"
String transactionManagerBeanName = "transactionManager$suffix"
def sessionFactoryBean = new RootBeanDefinition()
sessionFactoryBean.setTargetType(SessionFactory)
sessionFactoryBean.setBeanClass(InstanceFactoryBean)
def args = new ConstructorArgumentValues()
args.addGenericArgumentValue("#{hibernateDatastore.getDatastoreForConnection('$dataSourceName').sessionFactory}".toString())
sessionFactoryBean.setConstructorArgumentValues(
args
)
registry.registerBeanDefinition(
sessionFactoryName,
sessionFactoryBean
)
def transactionManagerBean = new RootBeanDefinition()
transactionManagerBean.setTargetType(PlatformTransactionManager)
transactionManagerBean.setBeanClass(InstanceFactoryBean)
def txMgrArgs = new ConstructorArgumentValues()
txMgrArgs.addGenericArgumentValue("#{hibernateDatastore.getDatastoreForConnection('$dataSourceName').transactionManager}".toString())
transactionManagerBean.setConstructorArgumentValues(
txMgrArgs
)
registry.registerBeanDefinition(
transactionManagerBeanName,
transactionManagerBean
)
}
}
}