Anstatt mitzumachen
Wenn Sie etwas zerlegen, versuchen Sie es in einer klaren Sprache zu beschreiben und finden Sie jemanden, der liest und Kommentare abgibt (umformuliert R. Feynman, aber ja, ich habe es getan).
Alle Kommentare, auch bösartig im Stil von "Ja, dass dies ~ weiß ~~ Leute erlaubt sich "willkommen.
Ziele
Anwendungen - Anzeigen von Berichten über den Fortschritt des Produkts (Skalen), wenn möglich, mit der Verteilung dieser Daten über das Netzwerk innerhalb des Unternehmens (für die Funktionalität);
Persönlich - ein wenig Verständnis der Federtechnologie
Technologie
- Frühlingsnetz
- Frühling jpa
- Lombok
- SpringFox Swagger (ich werde die Ruhe darauf testen)
- jaybird-jdk17, Version 3.0.5
- Maven
Motivation Gash Spring + Firebird
Kürzlich wurde der erste Client-Platz unter Linux Mint für den Ovsezavod-Operator eingerichtet, und die Anzeige von Berichten von Wine war nicht immer ausreichend. (alles andere funktioniert gut - Qt-Visualisierung - SCADA, Java SE-Archive).
Ein Rechen, auf den getreten werden musste
- Jackson-Abhängigkeiten verschiedener Versionen (behoben),
- Firebird nicht Codierungstyp festgelegt führt zu Standard (en) NONE,
Link zu git am Ende der Veröffentlichung.
Jackson und alles in allem
Verschiedene Komponenten zogen Jackson verschiedener Versionen fest, da es unangenehm ist, ist es notwendig, es zu reparieren.
Vom Team enthüllt
mvn dependency:tree -Dincludes=com.fasterxml.jackson.core +- org.springframework.boot:spring-boot-starter-web:jar:2.1.0.RELEASE:compile [INFO] | \- org.springframework.boot:spring-boot-starter-json:jar:2.1.0.RELEASE:compile [INFO] | \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.7:compile [INFO] \- io.springfox:springfox-swagger2:jar:2.7.0:compile [INFO] \- io.swagger:swagger-models:jar:1.5.13:compile [INFO] \- com.fasterxml.jackson.core:jackson-annotations:jar:2.8.5:compile
Wir reparieren in Pom.
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.7</version> <exclusions> <exclusion> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> </exclusion> <exclusion> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.7</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.7</version> </dependency>
Korrigiert, ca. es stellte sich heraus. Wenn Sie IDEA verwenden, ist es noch einfacher, externe Bibliotheken anzuzeigen . Dass es alle Abhängigkeiten gibt und sie die richtigen Versionen sind.
Allgemeine Anwendungsstruktur
Ich bin nicht mit Spring Boot-Tests der Anwendung vertraut, daher werde ich dies ohne Tests tun
("Ja, diese # Hautfarbe erlaubt sich").

Anwendungskonfiguration
Da ich ein erfahrener Entwickler bin und daher mit den etablierten Methoden nicht vertraut bin, werde ich Folgendes tun:
- in application.yml (beim Einrichten einer Datenbankverbindung)
spring: datasource: driver-class-name: org.firebirdsql.jdbc.FBDriver url: jdbc:firebirdsql://host:3050//work/cmn/db/namedb.fdb?sql_dialect=3&charSet=utf-8 username: ****** password: ****** useUnicode: true characterEncoding: UTF-8 sql-script-encoding: UTF-8 jpa: show-sql: true
- Verwenden von Anmerkungen direkt in den Klassen:
Wenn Sie charSet = utf-8 nicht angeben, lautet der Standardwert NONE : Falls die Tabellen auch NONE enthalten, erhalten wir unlesbare Zeichen oder laut firebirdsql.org:
3.2.4 How can I solve the error “Connection rejected: No connection character set specified” If no character set has been set, Jaybird 3.0 will reject the connection with an SQLNonTransientConnectionException with message “Connection rejected: No connection character set specified (property lc_ctype, encoding, charSet or localEncoding). Please specify a connection character set (eg property charSet=utf-8) or consult the Jaybird documentation for more information.”
Mindestmenge an Klassen und Dateien
Zu Beginn enthält index.html einen leeren Körper.
In der API wird Swagger ausgeführt, dessen Paketkonfigurationen (siehe unten) auf einer Ebene mit dem Rest des Projektpakets platziert sind.

Zum Projekt hinzufügen:
- Paketmodell
- clacc CModule - aka Data (Getter, Setter für Mitglieder, danke an Lombok für den minimalen "Code Monkey"), aka Entity (die Essenz einer Datenbanktabelle);
- Paket-Repository
- Die Schnittstelle CModuleRepository erweitert JpaRepository <CModule, String> (es werden Daten aus der Datenbank ausgewählt), und es muss vorerst nichts hinzugefügt werden (wie bei Query ).
- Paketdienste;
- Klasse CModuleService - auch bekannt als Service und @Transactional (readOnly = true) für die Arbeit mit dem Repository;
- Paketressourcen
- Klasse CModulesResource - auch bekannt als @RestController, @RequestMapping ("/ modules") ist für den Zugriff auf diese Adresse verantwortlich. Die Antwortbehörde wird es selbst tun (für uns sieht es so aus)
Wir werden auf alle Arten mit der RestController-API arbeiten. Wir weisen Swagger darauf hin:
@Configuration @EnableSwagger2 public class SwaggerConfiguration { @Bean public Docket documentation(){ return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) .paths(PathSelectors.any()) .build(); } }
Erstellen Sie eine Klasse, in der Spring Application ausgeführt wird:
@SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class,args); } }
Modelle, Repositorys und Anforderungen werden für die gewünschte Tabelle erstellt (ich habe Module):
Jetzt können Sie es mit @RestController aufnehmen
@RestController @RequestMapping("/modules") @Api(tags = "Modules", description = "Modules API") public class CModulesResource { .... @GetMapping(value = "/{name}") @ApiOperation(value = "Find module",notes = "Find the module by Name") @ApiResponses(value = { @ApiResponse(code = 200,message = "Modules found"), @ApiResponse(code = 404,message = "Modules not found"), })
API - der Name der Klasse mit einer Beschreibung;
@ApiOperation Methodenname mit Beschreibung;
@ApiResponses gab API-Codes zurück;
@ ApiResponse-spezifischer Code mit einer Beschreibung;
Beispiel (ja, es enthält immer noch die Hauptentität, die ich im Artikel nicht beschreibe)

Jetzt können Sie die Datenauswahl mit der REST-API testen.
Liste der verwendeten Literatur:
1. https://www.baeldung.com 2. https://docs.spring.io 3. Spring in Action, 5th Edition 4. https://www.firebirdsql.org/file/documentation/drivers_documentation/java/faq.html#how-can-i-solve-the-error-connection-rejected-no-connection-character-set-specified
Githublink
Github-Projekt