概述
为了更好的开始项目的开发,在本节我们将通过一个简单的实例对本次项目中的主要技术进行认识和理解。
任务1.1:建立用户表
任务描述
(1)建立用户表
任务实施
第一步、启动MySQL客户端Navicat(任何客户端软件),添加MySQL数据库:
第二步、连接数据库服务在默认数据库test中新建sys_user表;
任务1.2:创建Spring Boot 项目
任务描述
(1)创建项目
任务实施
第一步、浏览器访问:https://start.spring.io
配置顺序:
(1)项目构建工具是 Maven 还是 Gradle,Java后端目前来看还是Maven为主,因此这里选第一项;
(2)开发语言,当然是选择Java;
(3)Spring Boot 版本,默认选择的就是当前最新的稳定版本;
(4)既然是 Maven 工程,当然要有项目坐标,项目描述等信息了,另外这里还让输入了包名,应为创建成功后会自动创建启动类;
(5)Packing 表示项目要打包成 jar 包,还是 war 包,Spring Boot 的一大优势就是内嵌了 Servlet 容器,打成 jar包后可以直接运行,所有这里建议打成 jar 包,当然,根据实际情况,也可以选择war包;
(6)然后选择构建的 JDK 版本;
(7)最后是选择所需要的依赖,输入关键字,如 web ,会有相关的提示,这里先加入 web 依赖;
(8)所有的事情完成之后,点击最下面的 Generate Project 按钮,或者点击 Alt + Enter 按键,此时会自动下载项目,将下载下来的项目解压,然后用 IntelliJ IDEA 或者 Eclipse 打开即可进行开发。
第二步、使用IntelliJ IDEA打开demo项目:
添加连接池Druid
任务描述
1)添加相关依赖;
(2)添加相关配置;
(3)创建监控配置类;
(4)查看监控界面;
任务实施
第一步、在项目pom.xml文件中添加依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
第二步、在resource文件夹下的application.yml中添加配置:
server:
port: 80
servlet:
context-path: /demo
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=UTC
username: root
password: 123456
type: com.alibaba.druid.pool.DruidDataSource
druid:
validationQuery: SELECT 1 FROM DUAL
initialSize: 10
minIdle: 10
maxActive: 200
minEvictableIdleTimeMillis: 180000
testOnBorrow: false
testWhileIdle: true
removeAbandoned: true
removeAbandonedTimeout: 1800
logAbandoned: true
poolPreparedStatements: true
maxOpenPreparedStatements: 100
filters: stat,wall,slf4j,config
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.*.*.entity
global-config:
db-config:
id-type: ASSIGN_ID
第三步、创建Druid的Servlet和Filter监控配置类:
package com.example.demo.config;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator;
import com.alibaba.druid.support.spring.stat.DruidStatInterceptor;
import org.springframework.aop.Advisor;
import org.springframework.aop.support.DefaultPointcutAdvisor;
import org.springframework.aop.support.JdkRegexpMethodPointcut;
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 org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
/**
* druidServlet注册
*/
@Bean
public ServletRegistrationBean druidServletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(new StatViewServlet());
registration.addUrlMappings("/druid/*");
return registration;
}
/**
* druid监控 配置URI拦截策略
*/
@Bean
public FilterRegistrationBean druidStatFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//添加过滤规则.
filterRegistrationBean.addUrlPatterns("/*");
//添加不需要忽略的格式信息.
filterRegistrationBean.addInitParameter(
"exclusions", "/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid,/druid/*");
//用于session监控页面的用户名显示 需要登录后主动将username注入到session里
filterRegistrationBean.addInitParameter("principalSessionName", "username");
return filterRegistrationBean;
}
/**
* druid数据库连接池监控
*/
@Bean
public DruidStatInterceptor druidStatInterceptor() {
return new DruidStatInterceptor();
}
@Bean
public JdkRegexpMethodPointcut druidStatPointcut() {
JdkRegexpMethodPointcut druidStatPointcut = new JdkRegexpMethodPointcut();
String patterns = "com.example.demo.service.*";
//可以set多个
druidStatPointcut.setPatterns(patterns);
return druidStatPointcut;
}
/**
* druid数据库连接池监控
*/
@Bean
public BeanTypeAutoProxyCreator beanTypeAutoProxyCreator() {
BeanTypeAutoProxyCreator beanTypeAutoProxyCreator = new BeanTypeAutoProxyCreator();
beanTypeAutoProxyCreator.setTargetBeanType(DruidDataSource.class);
beanTypeAutoProxyCreator.setInterceptorNames("druidStatInterceptor");
return beanTypeAutoProxyCreator;
}
/**
* druid 为druidStatPointcut添加拦截
*/
@Bean
public Advisor druidStatAdvisor() {
return new DefaultPointcutAdvisor(druidStatPointcut(), druidStatInterceptor());
}
}
第四步、浏览器访问:http://localhost/demo/druid