SpringBoot配置資料來源DataSource
阿新 • • 發佈:2019-02-12
- 使用properties檔案配置springboot預設資料來源
這種方式十分簡單,只用在application.properties檔案中配置資料庫連線屬性即可。
spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&failOverReadOnly=false spring.datasource.username=root spring.datasource.password=root
執行測試方法,檢視springboot是否自動配置資料來源
@RunWith(SpringRunner.class) @SpringBootTest public class MonsterlanApplicationTests { @Autowired DataSourceProperties dataSourceProperties; @Autowired ApplicationContext applicationContext; @Test public void contextLoads() { // 獲取配置的資料來源 DataSource dataSource = applicationContext.getBean(DataSource.class); // 檢視配置資料來源資訊 System.out.println(dataSource); System.out.println(dataSource.getClass().getName()); System.out.println(dataSourceProperties); //執行SQL,輸出查到的資料 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); List<?> resultList = jdbcTemplate.queryForList("select* from test"); System.out.println("===>>>>>>>>>>>" + JSON.toJSONString(resultList)); } }
通過輸出資訊,我們可以看到我們通過properties檔案配置資料來源十分方便,springboot會直接在容器中構建一個dataSource供我們使用。
- 通過註解配置資料來源DataSource
通過註解配置datasource,這個比使用springboot預設的資料來源配置要更靈活一些,還可以根據專案需求配置多個不同的DataSource(如果專案使用到多個數據庫)
在properties檔案中配置資料庫屬性
spring.datasource.other.jdbc-url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&failOverReadOnly=false spring.datasource.other.username=root spring.datasource.other.password=root spring.datasource.other.driver-class-name=com.mysql.jdbc.Driver
這裡有個注意事項:
springboot 2.0+中使用jdbc-url配置資料庫URL, 1.5中使用url,不然會導致一個錯誤。jdbcUrl is required with driverClassName
建立一個配置類DataSourceConfig
@Configuration public class DataSourceConfig { @Bean(name = "myDataSource") @Qualifier("myDataSource") @ConfigurationProperties(prefix="spring.datasource.other") public DataSource getMyDataSource(){ return DataSourceBuilder.create().build(); } }
通過Junit測試資料來源
@RunWith(SpringRunner.class) @SpringBootTest public class MonsterlanApplicationTests { @Autowired DataSourceProperties dataSourceProperties; @Autowired ApplicationContext applicationContext; @Resource(name = "myDataSource") private DataSource myDataSource; @Test public void contextLoads() { //執行SQL,輸出查到的資料 JdbcTemplate jdbcTemplate = new JdbcTemplate(myDataSource); List<?> resultList = jdbcTemplate.queryForList("select * from menu"); System.out.println("===>>>>>>>>>>>" + JSON.toJSONString(resultList)); } }這樣我們就能使用資料來源進行資料庫操作了。
相關maven依賴配置:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- Mysql驅動包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- alibaba JSON工具 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.4</version> </dependency>