关于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
配置完成打开服务器和数据库测试
输入连接地址,跳转并查看数据库
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
登录后可以访问druid数据源的官网信息