Rumah > Java > javaTutorial > teks badan

Cara menggunakan Spring Boot untuk memantau status berjalan SQL

PHPz
Lepaskan: 2023-05-11 17:13:06
ke hadapan
1461 orang telah melayarinya

1. Persediaan

Mula-mula kami mencipta projek Spring Boot, memperkenalkan MyBatis, dsb., seperti berikut:

Cara menggunakan Spring Boot untuk memantau status berjalan SQL

Pilih Lihat pada pemacu MyBatis dan MySQL dan buat kes ujian mudah.

Mula-mula sambung ke pangkalan data:

spring.datasource.username=root
spring.datasource.password=123
spring.datasource.url=jdbc:mysql:///test05?serverTimezone=Asia/Shanghai
Salin selepas log masuk

Buat kelas entiti Pengguna dan buat kes pertanyaan mudah, seperti berikut:

public class User {
    private Integer id;
    private String username;
    private String address;
    private String password;
    private String email;
    //省略 getter/setter
}
@Mapper
public interface UserMapper {
    List<User> getUserByUsername(String username);
}
@Service
public class UserService {
    @Autowired
    UserMapper userMapper;
    public List<User> getUserByUsername(String username){
        return userMapper.getUserByUsername(username);
    }
}
@RestController
public class UserController {
    @Autowired
    UserService userService;

    @GetMapping("/user")
    public List<User> getUser(String username) {
        return userService.getUserByUsername(username);
    }
}
Salin selepas log masuk

UserMapper.xml adalah seperti berikut:

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.javaboy.druid_monitor.mapper.UserMapper">
    <select id="getUserByUsername" resultType="org.javaboy.druid_monitor.model.User">
        select * from user where username=#{username}
    </select>
</mapper>
Salin selepas log masuk

Ujian yang sangat mudah, tiada apa yang boleh dikatakan.

Anda boleh menyediakan persekitaran ini mengikut kehendak anda. Jika anda sudah mempunyai kes kegigihan, hanya pergi ke bahagian kedua untuk memperkenalkan Druid.

Kolam sambungan pangkalan data lalai yang digunakan oleh projek ini ialah HikariDataSource, yang merupakan kumpulan sambungan pangkalan data lalai dalam Spring Boot Sebenarnya, ini tidak buruk.

2. Memperkenalkan Druid

Seterusnya kami memperkenalkan Druid:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.8</version>
</dependency>
Salin selepas log masuk

Nota: Druid yang diperkenalkan oleh Spring Boot adalah yang di atas, yang akan dikonfigurasikan untuk pemantauan pada masa hadapan Ia adalah lebih mudah.

Seterusnya kami mengkonfigurasi WebStatFilter dalam application.properties WebStatFilter digunakan untuk mengumpul data pemantauan berkaitan web-jdbc:

# 启用 WebStatFilter
spring.datasource.druid.web-stat-filter.enabled=true
# 配置拦截规则
spring.datasource.druid.web-stat-filter.url-pattern=/*
# 排除一些不必要的 url,这些 URL 不会涉及到 SQL 查询
spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
# 开启 session 统计功能
spring.datasource.druid.web-stat-filter.session-stat-enable=true
# 缺省 sessionStatMaxCount 是 1000 个,我们可以按需要进行配置
spring.datasource.druid.web-stat-filter.session-stat-max-count=1000
# 配置 principalSessionName,使得 druid 能够知道当前的 session 的用户是谁
# 根据需要,这个参数的值是 user 信息保存在 session 中的 sessionName
#spring.datasource.druid.web-stat-filter.principal-session-name=
# 下面这个配置的作用和上面配置的作用类似,这个是通过 Cookie 来识别用户
#spring.datasource.druid.web-stat-filter.principal-cookie-name=
# 开启 profile 后就能够监控单个 URL 地址调用列表
#spring.datasource.druid.web-stat-filter.profile-enable=
Salin selepas log masuk

Kami hanya perlu mengkonfigurasi lima yang pertama, tetapi tiga yang terakhir tidak diperlukan. . Konfigurasi, maksud setiap konfigurasi telah disenaraikan dalam kod oleh Songge.

Seterusnya, buka konfigurasi StatViewServlet, seperti berikut:

# 启用内置的监控页面
spring.datasource.druid.stat-view-servlet.enabled=true
# 内置监控页面的地址
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
# 开启 Reset All 功能
spring.datasource.druid.stat-view-servlet.reset-enable=true
# 设置登录用户名
spring.datasource.druid.stat-view-servlet.login-username=javaboy
# 设置登录密码
spring.datasource.druid.stat-view-servlet.login-password=123
# 白名单(如果allow没有配置或者为空,则允许所有访问)
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1
# 黑名单(deny 优先于 allow,如果在 deny 列表中,就算在 allow 列表中,也会被拒绝)
spring.datasource.druid.stat-view-servlet.deny=
Salin selepas log masuk

Konfigurasikan alamat halaman dan senarai hitam putih.

Perlu diambil perhatian bahawa walaupun atribut pemboleh reset ditetapkan kepada palsu, butang tetapan semula akan dipaparkan, tetapi mengklik butang itu tidak akan menetapkannya semula.

Baiklah, itu sahaja.

3 Ujian

Baiklah, seterusnya kita mulakan projek Spring Boot untuk ujian.

Selepas projek Spring Boot berjaya dimulakan, mula-mula lawati alamat berikut: http://localhost:8080/druid/login.html

Pada masa ini kita akan melihat halaman pengesahan log masuk, Seperti berikut:

Cara menggunakan Spring Boot untuk memantau status berjalan SQL

Masukkan nama pengguna/kata laluan (javaboy/123) yang kami konfigurasikan sebelum ini untuk log masuk. Selepas berjaya log masuk, anda boleh melihat halaman berikut:

Cara menggunakan Spring Boot untuk memantau status berjalan SQL

Seperti yang anda lihat dari bar tajuk, sumber data, pemantauan SQL, tembok api SQL dan fungsi lain semuanya tersedia.

Seterusnya kami melawati alamat http://localhost:8080/user?username=aaa dan melaksanakan SQL Selepas pelaksanaan selesai, kami menyemak pemantauan SQL:

Cara menggunakan Spring Boot untuk memantau status berjalan SQL

Anda boleh melihatnya. pada masa ini Terdapat rekod pemantauan pelaksanaan SQL.

Data pemantauan lain juga boleh dilihat, jadi saya tidak akan menyenaraikannya satu persatu. Jika anda merasakan bahawa data yang dipaparkan di sini tidak intuitif dan ingin melukis halaman HTML anda sendiri, itu juga mungkin. Klik pada API JSON di penghujung dan anda boleh melihat alamat JSON bagi setiap item pemantauan anda mahu dengan rancangan JSON.

4 Pergi ke iklan

Jika anda mahu menggunakan halaman pemantauan ini secara langsung, terdapat iklan Alibaba di atasnya, seperti yang ditunjukkan di bawah adalah amat janggal untuk digunakan oleh syarikat:

Cara menggunakan Spring Boot untuk memantau status berjalan SQL

Kami mungkin mahu mengalih keluar iklan ini, itu juga mudah.

Pertama sekali, selepas analisis, kami mendapati bahawa iklan itu dibina daripada fail yang dipanggil common.js, yang terletak di sini druid-1.2.8.jar!/support/http/resources/js/common.js Fail common.js mempunyai baris berikut:

init : function() {
 this.buildFooter();
 druid.lang.init();
},
buildFooter : function() {
 var html =&#39;&#39;;
 $(document.body).append(html);
},
Salin selepas log masuk

Logiknya mungkin seperti di atas, kaedah buildFooter bertanggungjawab untuk membina iklan di hujung halaman, dan panggilan ke kaedah buildFooter diselesaikan dalam kaedah init.

Jika anda ingin mengalih keluar iklan, cuma jangan panggil kaedah buildFooter.

Jadi idea kami untuk mengalih keluar pengiklanan juga sangat mudah. ​​Tulis penapis, pintas permintaan ke common.js, dan kemudian buat sedikit pengubahsuaian, seperti berikut:

@WebFilter(urlPatterns = "/druid/js/common.js")
public class RemoveAdFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        String text = Utils.readFromResource("support/http/resources/js/common.js");
        text = text.replace("this.buildFooter();", "");
        servletResponse.getWriter().write(text);
    }
}
Salin selepas log masuk

Sambil anda. boleh lihat, ini Penapis adalah untuk memintas permintaan /druid/js/common.js Selepas memintasnya, baca sendiri fail common.js dalam fail, kemudian gantikan ayat this.buildFooter(); secara manual, dan akhirnya tulis fail itu.

Sudah tentu, ingat untuk mengimbas Penapis dalam kelas permulaan, seperti berikut:

@SpringBootApplication
@ServletComponentScan("org.javaboy.druid_monitor.filter")
public class DruidMonitorApplication {

    public static void main(String[] args) {
        SpringApplication.run(DruidMonitorApplication.class, args);
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Cara menggunakan Spring Boot untuk memantau status berjalan SQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan