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; } }