在上一个博客中,我们使用由InfluxDB支持的千分尺设置了反应式应用程序。

在本教程中,我们将使用传统的带JDBC阻塞式Servlet的Spring Stack。 我选择的数据库是postgresql。 我将使用与先前博客文章相同的脚本。


因此,我们将拥有初始化数据库的脚本

 #!/bin/bash  set -e  psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL create schema spring_data_jpa_example; create table spring_data_jpa_example.employee( id SERIAL PRIMARY KEY , firstname  TEXT NOT NULL , lastname   TEXT NOT NULL , email      TEXT not null , age INT NOT NULL , salary real , unique (email) ); insert into spring_data_jpa_example.employee (firstname,lastname,email,age,salary) values ( 'John' , 'Doe 1' , 'john1@doe.com' ,18,1234.23); insert into spring_data_jpa_example.employee (firstname,lastname,email,age,salary) values ( 'John' , 'Doe 2' , 'john2@doe.com' ,19,2234.23); insert into spring_data_jpa_example.employee (firstname,lastname,email,age,salary) values ( 'John' , 'Doe 3' , 'john3@doe.com' ,20,3234.23); insert into spring_data_jpa_example.employee (firstname,lastname,email,age,salary) values ( 'John' , 'Doe 4' , 'john4@doe.com' ,21,4234.23); insert into spring_data_jpa_example.employee (firstname,lastname,email,age,salary) values ( 'John' , 'Doe 5' , 'john5@doe.com' ,22,5234.23);  EOSQL 

我们将拥有一个包含InfluxDB,Postgres和Grafana的docker compose文件。

 version: '3.5'  services: influxdb: image: influxdb restart: always ports: - 8086 : 8086 grafana: image: grafana / grafana restart: always ports: - 3000 : 3000 postgres: image: postgres restart: always environment: POSTGRES_USER: db - user POSTGRES_PASSWORD: your - password POSTGRES_DB: postgres ports: - 5432 : 5432 volumes: - $PWD / init - db - script.sh: / docker - entrypoint - initdb.d / init - db - script.sh 

现在是时候从我们的maven依赖关系开始构建我们的spring应用程序了。

 <? xml version = "1.0" encoding = "UTF-8" ?>  < project xmlns = " http://maven.apache.org/POM/4.0.0 " xmlns:xsi = " http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation = " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd " > < modelVersion >4.0.0</ modelVersion > < parent > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-parent</ artifactId > < version >2.2.4.RELEASE</ version > </ parent > < groupId >com.gkatzioura</ groupId > < artifactId >EmployeeApi</ artifactId > < version >1.0-SNAPSHOT</ version > < build > < defaultGoal >spring-boot:run</ defaultGoal > < plugins > < plugin > < groupId >org.apache.maven.plugins</ groupId > < artifactId >maven-compiler-plugin</ artifactId > < configuration > < source >8</ source > < target >8</ target > </ configuration > </ plugin > < plugin > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-maven-plugin</ artifactId > </ plugin > </ plugins > </ build > < dependencies > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-web</ artifactId > </ dependency > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-data-jpa</ artifactId > </ dependency > < dependency > < groupId >org.springframework.boot</ groupId > < artifactId >spring-boot-starter-actuator</ artifactId > </ dependency > < dependency > < groupId >org.postgresql</ groupId > < artifactId >postgresql</ artifactId > < version >42.2.8</ version > </ dependency > < dependency > < groupId >io.micrometer</ groupId > < artifactId >micrometer-core</ artifactId > < version >1.3.2</ version > </ dependency > < dependency > < groupId >io.micrometer</ groupId > < artifactId >micrometer-registry-influx</ artifactId > < version >1.3.2</ version > </ dependency > < dependency > < groupId >org.projectlombok</ groupId > < artifactId >lombok</ artifactId > < version >1.18.12</ version > < scope >provided</ scope > </ dependency > </ dependencies >  </ project > 

由于这是JDBC支持的依赖关系,因此我们将创建实体和存储库。

 package com.gkatzioura.employee.model;  import javax.persistence.Column;  import javax.persistence.Entity;  import javax.persistence.GeneratedValue;  import javax.persistence.GenerationType;  import javax.persistence.Id;  import javax.persistence.Table;  import lombok.Data;  @Data  @Entity  @Table (name = "employee" , schema= "spring_data_jpa_example" )  public class Employee { @Id @Column (name = "id" ) @GeneratedValue (strategy = GenerationType.IDENTITY) private Long id; @Column (name = "firstname" ) private String firstName; @Column (name = "lastname" ) private String lastname; @Column (name = "email" ) private String email; @Column (name = "age" ) private Integer age; @Column (name = "salary" ) private Integer salary;  } 

然后让我们添加存储库

 package com.gkatzioura.employee.repository;  import com.gkatzioura.employee.model.Employee;  import org.springframework.data.jpa.repository.JpaRepository;  public interface EmployeeRepository extends JpaRepository<Employee,Long> {  } 

和控制器

 package com.gkatzioura.employee.controller;  import java.util.List;  import com.gkatzioura.employee.model.Employee;  import com.gkatzioura.employee.repository.EmployeeRepository;  import org.springframework.web.bind.annotation.RequestMapping;  import org.springframework.web.bind.annotation.RestController;  @RestController  public class EmployeeController { private final EmployeeRepository employeeRepository; public EmployeeController(EmployeeRepository employeeRepository) { this .employeeRepository = employeeRepository; } @RequestMapping ( "/employee" ) public List<Employee> getEmployees() { return employeeRepository.findAll(); }  } 

最后但并非最不重要的Application类

 package com.gkatzioura.employee;  import org.springframework.boot.SpringApplication;  import org.springframework.boot.autoconfigure.SpringBootApplication;  @SpringBootApplication  public class Application { public static void main(String[] args) { SpringApplication.run(Application. class , args); }  } 

以及配置

 spring: datasource: platform: postgres driverClassName: org.postgresql.Driver username: db - user password: your - password url: jdbc:postgresql: / / 127.0 . 0.1 : 5432 / postgres  management: metrics: export: influx: enabled: true db: employeeapi uri: http: / / 127.0 . 0.1 : 8086 endpoints: web: expose: "*" 

试试看

 curl http: //localhost :8080 /employee 

经过一些请求后,我们可以找到保留的条目。

 docker exec -it influxdb- local influx  > SHOW DATABASES;  name: databases  name  ----  _internal  employeeapi  > use employeeapi  Using database employeeapi  > SHOW MEASUREMENTS  name: measurements  name  ----  hikaricp_connections  hikaricp_connections_acquire  hikaricp_connections_active  hikaricp_connections_creation  hikaricp_connections_idle  hikaricp_connections_max  hikaricp_connections_min  hikaricp_connections_pending  hikaricp_connections_timeout  hikaricp_connections_usage  http_server_requests  jdbc_connections_active  jdbc_connections_idle  jdbc_connections_max  jdbc_connections_min  jvm_buffer_count  jvm_buffer_memory_used  jvm_buffer_total_capacity  jvm_classes_loaded  jvm_classes_unloaded  jvm_gc_live_data_size  jvm_gc_max_data_size  jvm_gc_memory_allocated  jvm_gc_memory_promoted  jvm_gc_pause  jvm_memory_committed  jvm_memory_max  jvm_memory_used  jvm_threads_daemon  jvm_threads_live  jvm_threads_peak  jvm_threads_states  logback_events  process_cpu_usage  process_files_max  process_files_open  process_start_time  process_uptime  system_cpu_count  system_cpu_usage  system_load_average_1m  tomcat_sessions_active_current  tomcat_sessions_active_max  tomcat_sessions_alive_max  tomcat_sessions_created  tomcat_sessions_expired  tomcat_sessions_rejected 

如您所见,指标与上一个示例有些不同。 我们有jdbc连接度量标准tomcat度量标准和与我们的应用程序相关的所有度量标准。 您可以在github上找到源代码。

翻译自: https://www.javacodegeeks.com/2020/03/spring-boot-and-micrometer-with-inlfuxdb-part-3-servlets-and-jdbc.html

具有InlfuxDB的Spring Boot和Micrometer第3部分:Servlet和JDBC相关推荐

  1. micrometer_具有InlfuxDB的Spring Boot和Micrometer第3部分:Servlet和JDBC

    micrometer 在上一个博客中,我们使用由InfluxDB支持的Micrometer设置了React式应用程序. 在本教程中,我们将使用传统的带有JDBC的基于Servlet的阻塞Spring堆 ...

  2. micrometer_具有InlfuxDB的Spring Boot和Micrometer第1部分:基础项目

    micrometer 对于那些关注此博客的人来说,难怪我会经常使用InfluxDB. 我喜欢这样一个事实,它是一个真正的单一用途的数据库(时间序列),具有许多功能,并且还带有企业支持. Spring也 ...

  3. 具有InlfuxDB的Spring Boot和Micrometer第1部分:基础项目

    对于那些关注此博客的人来说,难怪我倾向于大量使用InfluxDB. 我喜欢这样一个事实,它是一个真正的单一用途的数据库(时间序列),具有许多功能,并且还带有企业支持. Spring也是我选择的工具之一 ...

  4. micrometer_具有InlfuxDB的Spring Boot和Micrometer第2部分:添加InfluxDB

    micrometer 自从我们添加了基本应用程序以来,是时候启动InfluxDB实例了. 我们将按照之前的教程进行操作,并添加一个docker实例. docker run –rm -p 8086:80 ...

  5. 具有InlfuxDB的Spring Boot和Micrometer第2部分:添加InfluxDB

    自从我们添加了基本应用程序以来,是时候启动InfluxDB实例了. 我们将按照之前的教程进行操作,并添加一个docker实例. docker run –rm -p 8086:8086 –name in ...

  6. Spring Boot Web应用程序中注册 Servlet 的方法实例

    Spring Boot Web应用程序中注册 Servlet 的方法实例 本文实例工程源代码:https://github.com/KotlinSpringBoot/demo1_add_servlet ...

  7. listener filter servlet_实战Spring Boot 2.0系列:Listener, Servlet和Filter

    前言 用户认证授权.日志记录 MDC.编码解码.UA 检查.多端对应等都需要通过 拦截请求 来进行处理.这时就需要 Servlet.Filter.Listener.Interceptor 这几种组件. ...

  8. 【spring boot基础知识】java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

    出现此错误需要增加odbc jar包. 出现此错误的原因据说是这样的: 在使用Maven的依赖甲骨文的​​驱动包时,会出现依赖错误的情况,原因是版权原因,甲骨文官方屏蔽了依赖,那么要在本地使用的Mav ...

  9. 【2021最新版】Spring Boot面试题总结(92道题含答案解析)

    文章目录 1.什么是Spring Boot? 2.为什么要用SpringBoot? 3.Spring Boot有哪些优点? 4.Spring Boot的核心注解是哪个?它主要由哪几个注解组成的? 5. ...

最新文章

  1. python3 抛出异常_Python3 异常
  2. linux c socket ip地址 字符串 数字 转换 inet_addr inet_ntoa
  3. python3 随机数模块 得到一个10位随机数
  4. mybatis plus 事务管理器_Mybatis中的事务
  5. 盛大创新院赞助首届.NET技术交流会即将召开
  6. Py中enumerate方法【转载】
  7. MVC初级知识之五——MVCHtmlHelper使用
  8. RPC框架几行代码就够了
  9. JS高级群的日常!写一个从10到0的倒计时,用console.log打印,不可以用 setInterval!本来说好的研究avalonJS最后演变成了看着大神在那边互相比拼实力。。...
  10. vnpy官网说明文档网址
  11. 《美国数学建模竞赛》统计数据下载网址【微信公众号:高数叔】
  12. 【写法规范】-- 设计请求返回接口与封装
  13. 制药企业BI系统方案整体设计分享
  14. 收藏一篇好文章,关于云计算和大数据的
  15. 使用 laravel Passport 做 API 认证
  16. 计网实验三 虚拟局域网 VLAN
  17. linux svn 查看忽略文件,linux下SVN忽略文件/文件夹的方法
  18. 16s扩增子 qiime2 实战
  19. oled u8g2如何显示中文(实测有效)
  20. ps scavenge java_JVM源码分析(四)Parralel Scavenge 收集器工作流程

热门文章

  1. jzoj100046-收集卡片【暴力】
  2. 又发生频繁FGC,这次是谁的锅
  3. MySQL concat()函数
  4. 深入Java集合系列之五:PriorityQueue
  5. 动态代理proxy与CGLib的区别
  6. Spring入门(一)之简介
  7. echart vue 图表大小_vue之将echart封装为组件
  8. oracle 更新参数,Oracle动态、静态参数参数修改规则
  9. arm芯片厂家排名_国产芯片目前至少有10种,其中有3种,达到了世界顶尖水平
  10. python股票自动买卖视频教程_十分钟学会用Python交易股票