spring boot 配置DataSource 和 事務管理

spring boot 採用兩種方式配置:xml方式和java config方式。在此主要說明java config方式。 java

1. DataSource配置 mysql

@Configuration
@PropertySource("classpath:application.properties")
public class DataSourceConfiguration {
    @Value("${spring.datasource.driverClass:com.mysql.jdbc.Driver}")
    private String driverClass;
    //10.2.3.22
    @Value("${spring.datasource.jdbcUrl:jdbc:mysql:///?useUnicode=true&characterEncoding=UTF-8}")
    private String jdbcUrl;
    @Value("${spring.datasource.user:}")
    private String user;
    @Value("${spring.datasource.password:}")
    private String password;
    @Value("${spring.datasource.initialPoolSize:34}")
    private int initialPoolSize;
    @Value("${spring.datasource.maxActive:500}")
    private int maxActive;
    @Value("${spring.datasource.minIdle:100}")
    private int minIdle;
    @Value("${spring.datasource.maxIdle:500}")
    private int maxIdle;
    @Value("${spring.datasource.validateInterval:30}")
    private int validateInterval;


    @Bean
    public DataSource dataSource() throws PropertyVetoException {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
//        org.apache.tomcat.jdbc.pool.DataSource dataSource = new org.apache.tomcat.jdbc.pool.DataSource();
        dataSource.setUser(user);
        dataSource.setPassword(password);
        dataSource.setJdbcUrl(jdbcUrl);
        dataSource.setDriverClass(driverClass);
        dataSource.setInitialPoolSize(initialPoolSize);
        dataSource.setMaxAdministrativeTaskTime(maxActive);
        dataSource.setMaxIdleTime(maxIdle);

        return dataSource;
    }
}



上述是一個完整的java config類,該類使用@Configuration註解指明。其中,@PropertySource用於指明屬性文件的路徑,該屬性文件存儲的是類中的屬性值信息。 spring

@Value("${spring.datasource.driverClass:com.mysql.jdbc.Driver}") spring.datasource.driverClass,爲properties文件中的key值,而com.mysql.jdbc.Driver爲默認值,若是key值不存在或者是其對應的value爲空就默認採用默認值。 sql

在此,咱們使用的是C3P0提供的DataSource類。也可使用其餘開源插件。 apache


2. 配置事務。 tomcat

@Configuration
@EnableTransactionManagement
public class JpaRepositoryConfiguration {

    @Bean
    public JpaVendorAdapter jpaVendorAdapter() {
        HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();

        hibernateJpaVendorAdapter.setDatabase(Database.MYSQL);
        hibernateJpaVendorAdapter.setGenerateDdl(true);

        return hibernateJpaVendorAdapter;
    }

    @Bean
    public EntityManagerFactory entityManagerFactory(JpaVendorAdapter jpaVendorAdapter) {

        LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
        localContainerEntityManagerFactoryBean.setDataSource(dataSource);
        localContainerEntityManagerFactoryBean.setPackagesToScan("com.kuaidi.bi");
        localContainerEntityManagerFactoryBean.afterPropertiesSet();
//        return builder.dataSource(dataSource).build();
        return localContainerEntityManagerFactoryBean.getObject();

    }

    @Bean
//    public PlatformTransactionManager annotationDrivenTransactionManager(EntityManagerFactory entityManagerFactory) {
    public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
        JpaTransactionManager jpaTransactionManager = new JpaTransactionManager();
        jpaTransactionManager.setEntityManagerFactory(entityManagerFactory);
        return jpaTransactionManager;
    }


}
相關文章
相關標籤/搜索