Em vez de se juntar
Se você estiver analisando algo, tente descrevê-lo em uma linguagem clara e encontre alguém que leia e faça comentários (reformulado R. Feynman, mas sim, sim).
Todos os comentários, até cruéis no estilo de "Sim, que isso ~ branco ~~ pessoas permite-se "bem-vindo.
Objetivos
Aplicativos - exibindo relatórios sobre o andamento do produto (escalas), se possível, com a distribuição desses dados pela rede dentro da empresa (para funcionalidade);
Pessoal - um pouco de compreensão da tecnologia de molas
Tecnologia
- Teia de primavera
- Spring jpa
- Lombok
- SpringFox Swagger (testarei o resto)
- jaybird-jdk17, versão 3.0.5
- Maven
Motivação gash spring + firebird
Recentemente, foi feito o primeiro lugar de cliente no Linux Mint para o operador Ovsezavod e a exibição de relatórios do Wine nem sempre era adequada. (tudo funciona bem - visualização Qt - arquivos SCADA, Java SE).
Algum ancinho que teve que ser pisado
- dependências jackson de diferentes versões (fixas),
- O firebird não define o tipo de codificação leva ao padrão NENHUM,
Link para git no final da publicação.
Jackson e todos todos todos
Diferentes componentes apertaram jackson de versões diferentes, pois é desagradável, é necessário corrigi-lo.
Revelado pela equipe
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
Fixamos em 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>
Corrigido, aprox. acabou. Se você estiver usando o IDEA, será ainda mais fácil ver as bibliotecas externas . Que existem todas as dependências e são as versões corretas.
Estrutura geral da aplicação
Não estou familiarizado com o teste de inicialização por mola do aplicativo, por isso farei isso sem testes
("Sim, essa # cor da pele se permite").

Configuração da aplicação
Como sou um desenvolvedor experiente e, portanto, não estou familiarizado com os métodos estabelecidos, farei:
- em application.yml (ao configurar uma conexão com o banco de dados)
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 anotações diretamente nas classes:
Se você não especificar charSet = utf-8, o padrão será NONE : Caso as tabelas também não possuam NONE, obteremos caracteres ilegíveis ou, de acordo com 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 classes e arquivos
Para começar, index.html contém um corpo vazio;
Em execução na API está o Swagger, cujas configurações de (infra) pacote são colocadas em um nível com o restante do pacote do projeto.

Adicione ao projeto:
- modelo de embalagem
- clacc CModule - também conhecido como Data (getter, setter para membros, graças a Lombok pelo mínimo "código de macaco"), também conhecido como Entity (a essência de uma tabela de banco de dados);
- repositório de pacotes
- a interface CModuleRepository estende JpaRepository <CModule, String> (selecionará dados do banco de dados) e, por enquanto, nada precisa ser adicionado a ele (como Query );
- serviços de pacotes;
- classe CModuleService - aka Service e @Transactional (readOnly = true) por trabalhar com o repositório;
- recursos do pacote
- classe CModulesResource - também conhecida como @RestController, @RequestMapping ("/ modules") será responsável por acessar esse endereço. O corpo de resposta fará isso você mesmo (para nós, será assim)
Trabalharemos com a API RestController de todas as formas, indicamos isso ao 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(); } }
Crie uma classe executando o Aplicativo Spring:
@SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class,args); } }
Modelos, repositórios, solicitação são criados para a tabela desejada (eu tenho módulos):
agora você pode assumir @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 - o nome da classe com uma descrição;
Nome do método @ApiOperation com descrição;
@ApiResponses retornou códigos de API;
Código específico do @ApiResponse com uma descrição;
Exemplo (sim, ele ainda contém a entidade principal, que não descrevo no artigo)

Agora você pode testar a seleção de dados usando a API REST.
Lista de literatura usada:
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
Projeto Github