zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    
    --------------- 我每一次回头,都感觉自己不够努力,所以我不再回头。 ---------------
  • 相关阅读:
    有透明通道位图的传输
    WritePrivateProfileString等读写.ini配置文件
    使用TransparentBlt函数实现绘制透明位图
    宽字符和普通字符串处理函数
    C++输出十六进制、八进制和二进制数
    判断指定窗口是否被其他窗口遮挡
    c++ 复制图片到剪切板
    用默认浏览器打开一个网址
    Bitmap:bmWidthBytes
    C/C++ BMP图像的放大缩小(双线性插值)及彩色转黑白
  • 原文地址:https://www.cnblogs.com/zjw-blog/p/13615716.html
Copyright © 2011-2022 走看看