具有InlfuxDB的Spring Boot和Micrometer第3部分:Servlet和JDBC
在上一个博客中,我们使用由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相关推荐
- micrometer_具有InlfuxDB的Spring Boot和Micrometer第3部分:Servlet和JDBC
micrometer 在上一个博客中,我们使用由InfluxDB支持的Micrometer设置了React式应用程序. 在本教程中,我们将使用传统的带有JDBC的基于Servlet的阻塞Spring堆 ...
- micrometer_具有InlfuxDB的Spring Boot和Micrometer第1部分:基础项目
micrometer 对于那些关注此博客的人来说,难怪我会经常使用InfluxDB. 我喜欢这样一个事实,它是一个真正的单一用途的数据库(时间序列),具有许多功能,并且还带有企业支持. Spring也 ...
- 具有InlfuxDB的Spring Boot和Micrometer第1部分:基础项目
对于那些关注此博客的人来说,难怪我倾向于大量使用InfluxDB. 我喜欢这样一个事实,它是一个真正的单一用途的数据库(时间序列),具有许多功能,并且还带有企业支持. Spring也是我选择的工具之一 ...
- micrometer_具有InlfuxDB的Spring Boot和Micrometer第2部分:添加InfluxDB
micrometer 自从我们添加了基本应用程序以来,是时候启动InfluxDB实例了. 我们将按照之前的教程进行操作,并添加一个docker实例. docker run –rm -p 8086:80 ...
- 具有InlfuxDB的Spring Boot和Micrometer第2部分:添加InfluxDB
自从我们添加了基本应用程序以来,是时候启动InfluxDB实例了. 我们将按照之前的教程进行操作,并添加一个docker实例. docker run –rm -p 8086:8086 –name in ...
- Spring Boot Web应用程序中注册 Servlet 的方法实例
Spring Boot Web应用程序中注册 Servlet 的方法实例 本文实例工程源代码:https://github.com/KotlinSpringBoot/demo1_add_servlet ...
- listener filter servlet_实战Spring Boot 2.0系列:Listener, Servlet和Filter
前言 用户认证授权.日志记录 MDC.编码解码.UA 检查.多端对应等都需要通过 拦截请求 来进行处理.这时就需要 Servlet.Filter.Listener.Interceptor 这几种组件. ...
- 【spring boot基础知识】java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
出现此错误需要增加odbc jar包. 出现此错误的原因据说是这样的: 在使用Maven的依赖甲骨文的驱动包时,会出现依赖错误的情况,原因是版权原因,甲骨文官方屏蔽了依赖,那么要在本地使用的Mav ...
- 【2021最新版】Spring Boot面试题总结(92道题含答案解析)
文章目录 1.什么是Spring Boot? 2.为什么要用SpringBoot? 3.Spring Boot有哪些优点? 4.Spring Boot的核心注解是哪个?它主要由哪几个注解组成的? 5. ...
最新文章
- python3 抛出异常_Python3 异常
- linux c socket ip地址 字符串 数字 转换 inet_addr inet_ntoa
- python3 随机数模块 得到一个10位随机数
- mybatis plus 事务管理器_Mybatis中的事务
- 盛大创新院赞助首届.NET技术交流会即将召开
- Py中enumerate方法【转载】
- MVC初级知识之五——MVCHtmlHelper使用
- RPC框架几行代码就够了
- JS高级群的日常!写一个从10到0的倒计时,用console.log打印,不可以用 setInterval!本来说好的研究avalonJS最后演变成了看着大神在那边互相比拼实力。。...
- vnpy官网说明文档网址
- 《美国数学建模竞赛》统计数据下载网址【微信公众号:高数叔】
- 【写法规范】-- 设计请求返回接口与封装
- 制药企业BI系统方案整体设计分享
- 收藏一篇好文章,关于云计算和大数据的
- 使用 laravel Passport 做 API 认证
- 计网实验三 虚拟局域网 VLAN
- linux svn 查看忽略文件,linux下SVN忽略文件/文件夹的方法
- 16s扩增子 qiime2 实战
- oled u8g2如何显示中文(实测有效)
- ps scavenge java_JVM源码分析(四)Parralel Scavenge 收集器工作流程