首页 > 其他分享 >Spring Cloud 配置 Druid(二)

Spring Cloud 配置 Druid(二)

时间:2023-12-05 10:35:16浏览次数:32  
标签:Spring Druid springframework druid import org com annotation Cloud

不废话,直接上代码,

Nacos搭建的微服务,可以看 https://www.cnblogs.com/hanjun0612/p/17867349.html

 

一,pom文件

spring-cloud-starter-alibaba-nacos-discovery 和 spring-cloud-starter-openfeign

都是基于spring-cloud-alibaba-dependencies

版本为:2022.0.0.0

<!-- mybatis-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.4.1</version>
        </dependency>
 
        <!-- pojo持久化使用 -->
        <dependency>
            <groupId>jakarta.persistence</groupId>
            <artifactId>jakarta.persistence-api</artifactId>
            <version>3.1.0</version>
        </dependency>
 
        <!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>8.2.0</version>
        </dependency>
        <!--  druid数据源      -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.20</version>
        </dependency>
        <!-- 引入alibaba-nacos-discovery依赖,发现服务 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- 引入alibaba-nacos-config依赖,可以从Nacos配置中心获得配置信息 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

 

二,修改Nacos的配置文件

配置了druid

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/test1?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
 
name: hello world!
 
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: false

 

三,配置model,dao,controller

演示就不创建service了。

model 

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
 
import java.io.Serializable;
 
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {
    @TableId(value = "id",type = IdType.AUTO)
    private Integer id;
    @TableField(value = "name")
    private String name;
    @TableField(value = "schoolId")
    private Integer schoolId;
}

 

dao

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kintech2.test.model.User;
import org.apache.ibatis.annotations.Mapper;
 
@Mapper
public interface UserDao extends BaseMapper<User> {
}

 

controller

import com.alibaba.nacos.api.model.v2.Result;
import com.kintech2.test.mapper.UserDao;
import com.kintech2.test.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
@RequestMapping("api/test")
@RefreshScope
public class ApiTestController {
 
    @Autowired
    private UserDao userDao;
 
    @RequestMapping(value = "test2", method = RequestMethod.GET)
    @ResponseBody
    public Result test2(Integer id){
        User user=userDao.selectById(id);
        return Result.success(user.getName());
    }
}

 

四,配置Druid的监控

由于最新版本druid,还使用的javax.servlet,此处无法匹配jakarta.servlet。

所以目前要等druid更新,因此注释此配置类

import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
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 jakarta.servlet.Filter;
import jakarta.servlet.Servlet;
 
/**
 * 新版本Druid的监控还使用javax,无法匹配jakarta
 */
@Configuration
public class DruidConfig {
 
    @Bean
    @ConditionalOnMissingBean
    public ServletRegistrationBean<Servlet> druidServlet() {
        ServletRegistrationBean<Servlet> servletRegistrationBean = new ServletRegistrationBean<Servlet>(new StatViewServlet(), "/druid/*");
 
        //白名单:
        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.119");
        //登录查看信息的账号密码, 用于登录Druid监控后台
        servletRegistrationBean.addInitParameter("loginUsername", "admin");
        servletRegistrationBean.addInitParameter("loginPassword", "admin");
        //是否能够重置数据.
        servletRegistrationBean.addInitParameter("resetEnable", "true");
        return servletRegistrationBean;
 
    }
 
    /**
     * 注册Filter信息, 监控拦截器
     *
     * @return
     */
    @Bean
    @ConditionalOnMissingBean
    public FilterRegistrationBean<Filter> filterRegistrationBean() {
        FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<Filter>();
        filterRegistrationBean.setFilter(new WebStatFilter());
        //添加过滤规则.
        filterRegistrationBean.addUrlPatterns("/*");
        //添加不需要忽略的格式信息.
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }
}

 

五,测试

 

标签:Spring,Druid,springframework,druid,import,org,com,annotation,Cloud
From: https://www.cnblogs.com/hanjun0612/p/17876634.html

相关文章

  • springboot~构建webjars类型的前端jar包
    webjars类型的前端jar包我们可以将公用的js,css,html,vue,shtml打包成一个jar,然后在其他项目中引用,这样就不用每个项目都去引用一遍了,这样就可以实现前端的公用了。1.创建一个maven项目,添加依赖和插件<dependencies><!--依赖webjars-locator-core--><dep......
  • springboot集成swagger
    1.pom引入<!--swagger--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency&......
  • 如何记录SpringSecurity6.1中用户登录行为
    替换UsernamePasswordAuthenticationFilter类1.pom.xml<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-config</artifactId></dependency><plugin>......
  • 【SpringBootWeb入门-2】请求响应-请求-Postman工具
    JavaWeb开发最常见的就是各类数据的请求以及响应,在讲解请求参数接收内容之前,我们先来介绍一款功能强大的接口测试工具:Postman。Postman介绍:一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,作用:常用于进行接口测试。为什么要使用Postman?当前最为主流的开发模式是前后端分......
  • SpringBoot 如何实现文件上传和下载
    一、文件上传——upload<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>文件上传SpringBoot提供了Multipart文件上传的支持。Multipart是HTTP协议中的一种方式,用于支持文件上传。下面我们将介绍如......
  • Spring Boot中的文件上传和下载实现
    文件上传文件上传是Web应用程序中常见的功能之一,SpringBoot提供了MultipartFile接口来处理文件上传。以下是实现文件上传的步骤:添加依赖在pom.xml文件中添加以下依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</art......
  • 【Spring】SpringBoot3+ES(Elasticsearch)の環境構築
    参考URL:https://blog.csdn.net/cicada_smile/article/details/132308849https://www.cnblogs.com/hualess/p/11540477.htmlElasticsearchは、オープンソースの分散型検索エンジンであり、大量のデータをリアルタイムで検索、分析することができます。主にJavaで開発されており......
  • IDEA创建SpringBoot项目无法选择底版本JDK创建
    本地的IDEA版本为2021.3,当我们想要使用SpringInitializr快速创建一个SpringBoot项目时,会发现可以选择的JDK版本基本都是最新版本,而我们本地使用的JDK8,导致无法创建项目。解决方式:1、升级JDK版本因为Spring官网使用的Spring版本比较新,而新版的Spring不支持低版本的JDK了,所以我......
  • SpringBoot文件上传下载
    1、单文件上传这里的enctype的类型是mulitpart/form-data两种形式的提交,一种是以form表单的形式,一个是ajax的形式<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>上传文件</title><scriptsrc="https://cdn.bo......
  • SpringBoot+MybatisPlus 存json读json
    基础环境springboot2.5.3mysql8.0.22fastjson22.0.38主要配置1.返回VO字段添加注解@ApiModelProperty("字段内容")@TableField(typeHandler=JacksonTypeHandler.class)privateList<JSONObject>columnContent;2.返回Mapper中的resultMap中字段添加......