开发实例(一)

spring boot 同时被 3 个专栏收录
6 篇文章 0 订阅
3 篇文章 0 订阅

概述

为了更好的开始项目的开发,在本节我们将通过一个简单的实例对本次项目中的主要技术进行认识和理解。

任务1.1:建立用户表

任务描述

(1)建立用户表

任务实施

第一步、启动MySQL客户端Navicat(任何客户端软件),添加MySQL数据库:
1
2
第二步、连接数据库服务在默认数据库test中新建sys_user表;
3
4

任务1.2:创建Spring Boot 项目

任务描述

(1)创建项目

任务实施

第一步、浏览器访问:https://start.spring.io
5
配置顺序:
(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项目:
6
7

添加连接池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>

8

第二步、在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


9

第三步、创建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
在这里插入图片描述

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

⺌北城南笙。

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值