您好,登錄后才能下訂單哦!
SpringBoot如何實現快速配置數據源?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
SpringBoot如何快速配置數據源;有如下兩種方式:
首先我們需要明確數據源DataSource有什么作用:
實際項目中,我們在配置數據源的時候會指定數據庫連接池,比如流行的Hikari(spring默認的數據庫連接池)、C3p0、Dbcp2以及阿里巴巴的Druid。
一、使用數據庫連接池
應用在操作數據庫的時候,直接從數據庫連接池獲取連接,而不需要每次創建新的連接。
至于數據庫連接池的好處,總結就是: 應用創建和銷毀連接的代價是很大的,使用數據庫連接池可以很好的復用連接,節省開銷,方便管理,簡化開發。
可能有些場景我們不想使用SpringBoot JDBC默認的數據源,我需要引入數據庫連接池,然后自定義數據源,指定數據源類型。
下面以Dbcp2數據庫連接池配置數據源為例。
二、配置依賴
引入dbcp2的數據庫連接池已經相關依賴。
<!-- dbcp2數據庫連接池 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> <version>2.7.0</version> </dependency> <!--數據庫驅動--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.18</version> </dependency> <!-- 提供操作數據庫的標準口徑 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.2.RELEASE</version> <scope>compile</scope> </dependency>
三、編寫配置項
在application.properties文件中配置數據庫連接屬性。
customize.datasource.url=jdbc:mysql://localhost:3306/blue?serverTimezone=UTC customize.datasource.username=root customize.datasource.password=wan4380797 customize.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
四、自定義DataSource
import org.apache.commons.dbcp2.BasicDataSource; @Configuration public class Dbcp2DataSource { @Bean("myDbcp2DataSource") @ConfigurationProperties(prefix = "customize.datasource") public DataSource getDataSource(){ return DataSourceBuilder.create().type(BasicDataSource.class).build(); } }
這邊我們可以看到我們創建的DataSource類型為BasicDataSource類型的。并且BasicDataSource來源于之前配置的dbcp2依賴的jar包中。
五、調用驗證
下面我們使用junit來驗證以下數據源配置的正確與否:
@SpringBootTest @RunWith(SpringRunner.class) public class JdbcCustomizeDatasourceApplicationTests { @Autowired @Qualifier("myDbcp2DataSource") private DataSource dataSource; @Test public void springJdbcTemplateTest(){ try{ JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); String queryStr = "select * from student"; List<Student> resultList = new ArrayList<>(); jdbcTemplate.query(queryStr, (ResultSet resultSet)->{ Student student = new Student(); student.setId(resultSet.getString("id")); student.setStudentId(resultSet.getString("student_id")); student.setStudentName(resultSet.getString("student_name")); student.setAge(resultSet.getInt("age")); resultList.add(student); }); resultList.forEach((Student student) -> System.out.println(student)); }catch (Exception exception){ exception.printStackTrace(); } } }
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。