关于SpringBoot的配置,集成JDBC,整合阿里数据源

  • spring Boot配置文件
  • application.yml
  • yaml基本语法:
  • 值的写法
  • springBoot自动配置
  • SpringBoot集成JDBC
  • SpringBoot整合阿里数据源


spring Boot配置文件

Spring Boot使用一个全局的配置文件(配置文件名是固定的),application.properties 属性文件格式,内容为键值对

application.yml

yml是YAML(YAML Ain’t Markup Language)语言的文件,以数据为中心.
使用时可将文件自带的.properties文件改为.yml文件,进行配置拼写

yaml基本语法:

语法结构:key:空格 value

以此来表示一对键值对(空格不能省略);以空格的缩进来控制层级关系,只要是左边对
齐的一列数据都是同一个层级的。

值的写法

字面量:普通的值[数字,布尔值,字符串] K: V

字面量直接写在后面就可以,字符串默认不用加上双引号或者单引号;

案例:

创建一个user类, 需要使用@ConfigurationProperties注解标签将配置文件中的内容映射到类中的属性.

package com.qn.backserver.backserver.model;

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

@ConfigurationProperties(prefix = "user")
@Component
public class User {
    String name;
    int age;
    String hobby;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", hobby='" + hobby + '\'' +
                '}';
    }
}
user:
  name: jim
  age: 20
  hobby:
      -写代码
      -打游戏

在application.yml中配置

在项目自带的BackserverApplication中配置

package com.qn.backserver.backserver;

import com.qn.backserver.backserver.model.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class BackserverApplicationTests {
@Autowired
User user;
    @Test
    void contextLoads() {
        System.out.println(user);
    }

}

点击运行,即可

springBoot自动配置

Springboot实现自动装配的核心仍然是使用注解标签,

@SpringBootApplication是springboot核心注解,其中包含@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan.

1.@ComponentScan它默认扫描的是与该类同级的类或者同级包下的所有类.

2.@SpringBootConfiguration,通过源码得知它是一个@Configuration,相当于之前的配置文件功能.

3.@EnableAutoConfiguration是这里最重要的注解,它实现了对Spring Boot应用自动装配的功能。@EnableAutoConfiguration是利用SpringFactoriesLoader机制加载自动装配配置的,它的配置数据在META-INF/spring.factories中,我们打开spring-boot-autoconfigure jar中的该文件,发现对应着许多个XXXAutoConfiguration配置类.

4.@Configuration

加入@Configuration 注解,表明这就是一个配置类。有一个myBean()的方法并用@Bean 进行注释,返回一个MyBean()的实例,表明这个方法是需要被Spring进行管理的bean。@Bean 如果不指定名称的话,默认使用myBean名称,也就是小写的名称。

5.@Bean

相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。

SpringBoot集成JDBC

数据源配置在我们访问数据库的时候,需要先配置一个数据源,下面分别介绍一下几种不同的数据库配置方式。

首先,为了连接数据库需要引入jdbc支持,在pom.xml中引入如下配置:

<!-- springboot-jdbc -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
 <!-- mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

在此我们写一个简单的Hello world

HelloDao代码

package com.qn.backserver.backserver.dao;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class HelloDao {
    @Autowired
    JdbcTemplate jdbcTemplate;
    public void save(){
        jdbcTemplate.update("insert into abc(name,url)values ('QQ群','sss')");
    }
}

HelloController代码

package com.qn.backserver.backserver.service;

import com.qn.backserver.backserver.dao.HelloDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional
public class HelloService {
    @Autowired
    HelloDao helloDao;
    public void saveMenu(){
       helloDao.save();
    }
}

HelloServe代码

package com.qn.backserver.backserver.controller;

import com.qn.backserver.backserver.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(path = "/hello")
public class HelloSpring {
    @Autowired
    HelloService helloService;

    @RequestMapping(path="/test")
    public String test(){
        return "hello springboot";
    }

    @RequestMapping(path="/save")
    public String test1(){
        helloService.saveMenu();
        return "保存成功";
    }
}

在application.yml中配置

server:
  port: 9999
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/ssm_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: root

配置完成打开服务器和数据库测试

输入连接地址,跳转并查看数据库

spring boot yml 配置文件继承 springboot的yml配置数据源_spring


spring boot yml 配置文件继承 springboot的yml配置数据源_bc_02

SpringBoot整合阿里数据源

导入阿里数据源jar

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>

在yml文件中注册阿里数据库连接池

type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5  //初始化时建立物理连接的个数
    minIdle: 5   //最小连接池数量
    maxActive: 20 //最大连接池数量
    filter: stat

添加工具类,Sql监控

package com.qn.backserver.backserver.config;
import javax.sql.DataSource;

import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.alibaba.druid.pool.DruidDataSource;

//@Configuration表示一个配置类
@Configuration
public class DruidDataSourceConfig {

	    @Bean
		@ConfigurationProperties(prefix = "spring.datasource")
	    public DataSource druid() {
	    	DruidDataSource dataSource=new DruidDataSource();
	        return dataSource;
	    }

	    //注册那些ip可以访问sql监控功能
	@Bean
	public ServletRegistrationBean druidStatViewServlet() {
		//ServletRegistrationBean提供类的进行注册
		ServletRegistrationBean servletRegistrationBean =
				new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
		//添加初始化参数:initParams
		//白名单:
		servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
		//IP黑名单(同时存在时,deny优先于allow)
		//如果满足deny,就提示:sorry,you are not permitted to view this page
		servletRegistrationBean.addInitParameter("deny", "192.168.1.73");
		//登录查看信息的账号和密码
		servletRegistrationBean.addInitParameter("loginUsername", "admin");
		servletRegistrationBean.addInitParameter("loginPassword", "123456");
		servletRegistrationBean.addInitParameter("resetEnable", "false");
		return servletRegistrationBean;
	}
	@Bean
	public FilterRegistrationBean druidStatFilter() {
		FilterRegistrationBean filterRegistrationBean =
				new FilterRegistrationBean(new WebStatFilter());
		//添加过滤规则
		filterRegistrationBean.addUrlPatterns("/*");
		//添加需要忽略的格式信息
		filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif," +
				"*.jpg,*.png, *.css,*.ico,/druid/*");
		return filterRegistrationBean;

	}
	 
}

配置完成后可以在服务器打开的情况下,访问这个网页 http://localhost:9999/druid/login.html

spring boot yml 配置文件继承 springboot的yml配置数据源_spring_03


spring boot yml 配置文件继承 springboot的yml配置数据源_java_04

登录后可以访问druid数据源的官网信息