Spring Cloud 配置 Druid(二)

不廢話,直接上代碼,

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;
    }
}

 

五,測試

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章