En lugar de unirse
Si está desarmando algo, intente describirlo en un lenguaje claro y encuentre a alguien que lea y haga comentarios (reformuló R. Feynman, pero sí, lo hice).
Todos los comentarios, incluso viciosos en el estilo de "Sí, que esto ~ blanco ~~ personas se permite "bienvenido".
Objetivos
Aplicaciones : mostrar informes sobre el progreso del producto (escalas), si es posible, con la distribución de estos datos a través de la red dentro de la empresa (para la funcionalidad);
Personal : un poco de comprensión de la tecnología de primavera
Tecnología
- Web de primavera
- Primavera jpa
- Lombok
- SpringFox Swagger (voy a probar descansar en él)
- jaybird-jdk17, versión 3.0.5
- Maven
Motivación Gash Spring + Firebird
Recientemente, se realizó el primer lugar de cliente en Linux Mint para el operador Ovsezavod y la visualización de informes de Wine no siempre fue adecuada. (todo lo demás funciona bien - visualización Qt - SCADA, archivos Java SE).
Un rastrillo que tenía que ser pisado
- dependencias de Jackson de diferentes versiones (fijo),
- firebird no establece el tipo de codificación conduce a valores predeterminados NINGUNO,
Enlace a git al final de la publicación.
Jackson y todos todos todos
Diferentes componentes arrastrados en jackson de diferentes versiones, ya que es desagradable, es necesario arreglarlo.
Revelado por el equipo
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
Lo arreglamos en 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>
Corregido, aprox. Resultó. Si está utilizando IDEA, es aún más fácil ver Bibliotecas externas . Que hay todas las dependencias y que son las versiones correctas.
Estructura de aplicación general
No estoy familiarizado con las pruebas de arranque de la aplicación, así que lo haré sin pruebas
("Sí, ese # color de piel se permite").

Configuración de la aplicación
Como soy un desarrollador experimentado y, por lo tanto, no estoy familiarizado con los métodos establecidos, haré:
- en application.yml (al configurar una conexión de base de datos)
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
- usando anotaciones directamente en las clases:
Si no especifica charSet = utf-8, el valor predeterminado será NINGUNO : en caso de que las tablas también tengan NINGUNO, obtendremos caracteres ilegibles o, según 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.”
Conjunto mínimo de clases y archivos.
Para comenzar, index.html contiene un cuerpo vacío;
En la API se ejecuta Swagger, cuyas configuraciones de paquetes (infra) se colocan a un nivel con el resto del paquete del proyecto.

Añadir al proyecto:
- modelo de paquete
- clacc CModule - también conocido como Data (getter, setter para miembros, gracias a Lombok por el "código mono" mínimo), también conocido como Entity (la esencia de una tabla de base de datos);
- repositorio de paquetes
- la interfaz CModuleRepository extiende JpaRepository <CModule, String> (seleccionará datos de la base de datos), y por ahora no es necesario agregar nada (como Consulta );
- servicios de paquetes;
- clase CModuleService - también conocido como Servicio y @Transactional (readOnly = true) para trabajar con el repositorio;
- paquete de recursos
- clase CModulesResource - también conocido como @RestController, @RequestMapping ("/ modules") será responsable de acceder a esta dirección. El cuerpo de respuesta lo hará usted mismo (para nosotros se ve así)
Trabajaremos con la API RestController de todas las formas, se lo indicamos a Swagger:
@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(); } }
Cree una clase que ejecute la aplicación Spring:
@SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class,args); } }
Se crean modelos, repositorios, solicitud para la tabla deseada (tengo módulos):
ahora puedes enfrentarte a @RestController
@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 : el nombre de la clase con una descripción;
Nombre del método @ApiOperation con descripción;
@ApiResponses devolvió códigos API;
Código específico de @ApiResponse con una descripción;
Ejemplo (sí, todavía contiene la entidad principal, que no describo en el artículo)

Ahora puede probar la selección de datos utilizando la API REST.
Lista de literatura utilizada:
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
Proyecto Github