Я только что обновил с весны 3.1.1 до 3.2.6Spring - конфигурация Java @Bean параметр
С 3.1 следующий код работал хорошо:
@Bean(name = DEMO_DS)
public JndiObjectFactoryBean demoDataSource()
{
JndiObjectFactoryBean factory = new JndiObjectFactoryBean();
factory.setJndiName(JDBC_DEMO_DS);
factory.setProxyInterface(DataSource.class);
return factory;
}
@Bean(name = DEMO_SESSION_FACTORY)
public SqlSessionFactoryBean demoSqlSessionFactory(@Qualifier(DEMO_DS) DataSource dataSource)
{
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setConfigLocation(new ClassPathResource("demo/config.xml"));
return sessionFactory;
}
Однако с uprgraded версии я получаю следующее исключение:
Вызванное: org.springframework.beans.factory.NoSuchBeanDefinitionException: Нет квалификационных рожкового типа [javax.sql.DataSource] найдено для отда endance: ожидается как минимум 1 бит, который квалифицируется как кандидат на автоподбор для этой зависимости. Зависимость от аннотаций: {@ org.springframework.beans.factory.annotation.Qualifier (значение = DemoDataSource)}
У меня есть несколько DataSources поэтому @Qualifier необходимость.
Спасибо.
Edit:
кажется, что это решает проблему:
public DataSource dataSourceFactory() {
try
{
return (DataSource) demoDataSource().getObject();
}
catch (Exception ex)
{
throw new RuntimeException(ex);
}
}
...
sessionFactory.setDataSource(dataSourceFactory());
Однако я не думаю, что это хорошее решение.