SpringBoot整合JDBC--數據源


1 新建SpringBoot項目

1.1 導入pom依賴文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.zjw</groupId>
	<artifactId>springbootjdbc</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springbootjdbc</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!--Thymeleaf-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<!--jdbc-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<!--mysql-->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.15</version>
		</dependency>
		<!--druid-->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.12</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

2 通過@PropertySource注解讀取配置文件

2.1 新建jdbc.properties文件

在resources下新建jdbc.properties文件

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.234.128/sb?useSSL=false&serverTimeZone=Shanghai/Asia
jdbc.username=root
jdbc.password=a@123456

2.2 新建配置類,加載配置文件

package com.zjw.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

/**
 * 數據源的JDBC配置類
 */
@Configuration
@PropertySource("classpath:/jdbc.properties") //加載指定的Properties配置文件
public class JdbcConfiguration {

    @Value("${jdbc.driverClassName}")
    private String driverClassName;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;
    

    /**
     * 實例化Druid
     * @return
     */
    @Bean
    public DataSource getDataSource(){
        DruidDataSource source = new DruidDataSource();
        source.setDriverClassName(this.driverClassName);
        source.setUrl(this.url);
        source.setUsername(this.username);
        source.setPassword(this.password);
        return source;
    }
}

2.3 編寫Controller測試類

debug觀察dataSource的屬性

package com.zjw.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import javax.annotation.Resource;
import javax.sql.DataSource;

@Controller
public class UsersController {

    @Resource
    private DataSource dataSource;

    @GetMapping("/showInfo")
    public String showInfo(){
        return "OK";
    }
}

3 通過@ConfigurationProperties注解讀取配置信息

由於@ConfigurationProperties是SpringBoot的注解不能讀取其他配置文件,只能讀取SpringBoot的application的位置文件,我們把數據庫的連接信息放到application.properties文件中

3.1 application.properties文件添加數據庫信息

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.234.128/sb?useSSL=false&serverTimeZone=Shanghai/Asia
jdbc.username=root
jdbc.password=a@123456

3.2 新建JdbcProperties類,加載數據的信息

@ConfigurationProperties(prefix = "jdbc") prefix屬性用來指定配置文件的前綴,同時要為屬性指定getter/setter方法

package com.zjw.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * JDBC配置信息屬性類
 */
@ConfigurationProperties(prefix = "jdbc") //是SpringBoot的注解不能讀取其他配置文件,只能讀取SpringBoot的application的位置文件
public class JdbcProperties {
    private String driverClassName;
    private String url;
    private String username;
    private String password;


    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

3.3 修改JdbcConfiguration類

通過@EnableConfigurationProperties(JdbcProperties.class)加載數據庫的配置信息

package com.zjw.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.annotation.Resource;
import javax.sql.DataSource;

/**
 * 數據源的JDBC配置類
 */
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {

    @Resource
    private JdbcProperties jdbcProperties;

    /**
     * 實例化Druid
     * @return
     */
    @Bean
    public DataSource getDataSource(){
        DruidDataSource source = new DruidDataSource();
        source.setDriverClassName(jdbcProperties.getDriverClassName());
        source.setUrl(jdbcProperties.getUrl());
        source.setUsername(jdbcProperties.getUsername());
        source.setPassword(jdbcProperties.getPassword());
        return source;
    }
}

也可以通過構造方法注入JdbcProperties

package com.zjw.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

/**
 * 數據源的JDBC配置類
 */
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {

    private JdbcProperties jdbcProperties;

    public JdbcConfiguration(JdbcProperties jdbcProperties) {
        this.jdbcProperties = jdbcProperties;
    }

    /**
     * 實例化Druid
     * @return
     */
    @Bean
    public DataSource getDataSource(){
        DruidDataSource source = new DruidDataSource();
        source.setDriverClassName(jdbcProperties.getDriverClassName());
        source.setUrl(jdbcProperties.getUrl());
        source.setUsername(jdbcProperties.getUsername());
        source.setPassword(jdbcProperties.getPassword());
        return source;
    }
}

3.4 將@ConfigurationProperties作用在方法上,取消JdbcProperties類

package com.zjw.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

/**
 * 數據源的JDBC配置類
 */
@Configuration
public class JdbcConfiguration {

    /**
     * 實例化Druid
     * @return
     */
    @Bean
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource getDataSource(){
        DruidDataSource source = new DruidDataSource();
        return source;
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM