我是春天的新手,我只是测试一些实用程序来学习spring框架上的java配置,所以问题是
我有两个配置,如下所示,我想将一个配置扩展到另一个配置并使用appconfig的子java配置,所以我这样做并且工作一切都很好但是我仍然觉得它对我不好,你能不能给我正确的方式或替代此感谢
休眠配置
**package configuration**
@Configuration
@EnableTransactionManagement
@ComponentScan({"configuration"})
@PropertySource(value={"classpath:application.properties"})
public class HibernateConfiguration {
@Autowired
Environment environment;
@Bean
public LocalSessionFactoryBean sessionFactory(){
LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
sessionFactoryBean.setDataSource(generateDataSource());
sessionFactoryBean.setPackagesToScan(new String[]{"whateverpackage.model"});
sessionFactoryBean.setHibernateProperties(generateProperties());
return sessionFactoryBean;
}
@Bean
public DataSource generateDataSource() {
DriverManagerDataSource driverManagerDataSource = new DriverManagerDataSource();
driverManagerDataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverclassname"));
driverManagerDataSource.setUrl(environment.getRequiredProperty("jdbc.url"));
driverManagerDataSource.setUsername(environment.getRequiredProperty("jdbc.username"));
driverManagerDataSource.setPassword(environment.getRequiredProperty("jdbc.password"));
return driverManagerDataSource;
}
public Properties generateProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect"));
properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));
return properties;
}
@Bean
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) {
HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory); //constructor-arg can be use in xml
return transactionManager;
}
}
子结构
package another.configuration
@Configuration
@ComponentScan({"another.configuration"})
@EnableTransactionManagement
@PropertySource(value={"classpath:application.properties"})
public class SubConfiguration extends HibernateConfiguration{
}
的AppConfig
package another.configuration
@Configuration
@ComponentScan(basePackages="root package")
@Import(SubConfiguration.class)
public class AppConfig {
}