在spring中扩展java配置

时间:2016-08-18 09:24:04

标签: java spring spring-java-config

我是春天的新手,我只是测试一些实用程序来学习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   {

}

0 个答案:

没有答案