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