一,介绍两种配置方式,但一般都是用SB配置文件配置 :
1,使用springboot配置文件(application.properties)集成。
2,使用Java配置类集成.
SpringBoot提倡基于java的配置,尽管你可以使用XML源调用SpringApplication.run(),不过还是建议你使用@Configuration类作为主要配置源。(但我们还是用XML源较多)
从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或 AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。
二,导入Druid 数据源 所需的依赖
<!--web场景支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mybatis场景支持-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</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>
<!--druid数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.17</version>
</dependency>
三,编写application.prperties配置文件,方式1。
#数据源 配置
#指定数据源类型
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#数据库驱动
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
#远程连接url
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&charaterEncoding=utf-8&useSSL=false
#数据库用户名
spring.datasource.username=root
#数据库密码
spring.datasource.password=123456
# myBatis 配置
# 配置扫描实体类
mybatis.type-aliases-package=com.example.springboot5.entity.Emp
# 配置扫描映射文件(如果和接口在同一文件不需要配置)
#mybatis.mapper-locations=com.example.springboot5.mapper/*.xml
#是否启用StatFilter默认值false
spring.datasource.druid.web-stat-filter.enabled=true
#是否启用StatViewServlet(监控页面)默认值为false(考虑到安全问题默认并未启动,如需启用建议设置密码或白名单以保障安全)
spring.datasource.druid.stat-view-servlet.enabled=true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.druid.filters=stat,wall,slf4j
# 配置监控url
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
#配置监控链接
spring.datasource.druid.web-stat-filter.url-pattern=/*
# 配置忽略过滤形式
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*
# 配置druid 登录名 和 密码
spring.datasource.druid.stat-view-servlet.login-username=root
spring.datasource.druid.stat-view-servlet.login-password=123456
#初始化时建立物理连接的个数
spring.datasource.druid.initial-size=5
#最小连接池数量
spring.datasource.druid.min-idle=5
#最大连接池数量
spring.datasource.druid.max-active=20
#获取连接时最大等待时间,单位毫秒
spring.datasource.druid.max-wait=60000
#用来检测连接是否有效的sql 必须是一个查询语句
#mysql中为 select 'x'
#oracle中为 select 1 from dual
spring.datasource.druid.validation-query=select 'x'
四,@Configuration类方式配置,方式2。
常用注解:
- @Configuration 配置类注解,标识这是一个配置类
- @Bean 注入bean到Spring容器中
- @Primary 当同一类型的bean出现时,默认优先选择
- @Value 将外部(配置文件中)的值注入bean中
- @Resource 按照名称装载bean
- @Autowired 按照类型装载bean
- @Primary 优先使用该bean
package com.example.springboot5.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class DruidConfig {
@Bean
@Primary
public DataSource dataSource(){
//指定使用数据源
DruidDataSource dataSource = new DruidDataSource();
//数据库连接信息
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
//数据库用户名和密码
dataSource.setName("root");
dataSource.setPassword("123456");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
try{
//配置默认拦截
dataSource.setFilters("stat,wall,slf4j");
}catch (Exception e){ }
return dataSource;
}
@Bean
public FilterRegistrationBean filterRegistrationBean(){
//创建过滤器
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.setEnabled(true);
Map<String,Object> intiParams = new HashMap<>();
//忽略过滤的文件
intiParams.put("exclusions","*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*");
filterRegistrationBean.setInitParameters(intiParams);
//设置过滤路径
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
}
}
五,Controller编写,主要用于测试。
package com.example.springboot5.web;
import com.example.springboot5.entity.Emp;
import com.example.springboot5.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
//官方推荐注解(所有方法返回json格式数据)
@RestController
public class WebController {
@Autowired
private EmpService empService;
@RequestMapping("/emplist")
private Map<String,Object> empList(){
Map<String,Object> model = new HashMap<>();
//查询所有员工
List<Emp> emps = empService.findEmpList();
model.put("emps",emps);
model.put("success",true);
return model;
}
}
五,一:测试是否能查询到结果
在浏览器URL输入:localhost:8080/emplist
六:查看数据库记录 druid自带的数据监控
在浏览器URL输入:localhost:8080/druid
登录成功之后,会进入到Index.html页面。
该页面里面就会有所有查询语句的记录。
附:项目Demo的结构