Vou precisar criar um projeto pequeno em Java e precisa ser Desktop.
Gostaria de usar as facilidades do Spring Boot que já uso para Web, porém não consigo usar o CDI dele.
Ao criar um JFrame ou JInternalFrame, dentro dele não consigo usar o @Autowired em um @Service ou @Repository. Ocorre NullPointerException.
As interfaces de Repository não podem instanciadas manualmente.
Note que usei SpringApplicationBuilder com headless(false) para tudo funcionar corretamente.
Este aqui é o código completo que usei para testar
Meu build.gradle:
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.0'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'
}
O que eu entendi é que eles querem tirar proveito da injeção de dependencia do Spring em uma aplicação Swing.
Já o jeito que vc sugeriu, onde vc falou sobre servidor, vc interpretou que eles tem uma aplicação Swing que será cliente de uma outra aplicação feita com Spring. Mas eu acho que não é isso que eles querem, acho que há apenas um aplicação desktop e eles querem usar injeção de dependencias nela.
R
rodriguesabner
Que doideira…
J
j-menezes
Você quer colocar tudo na mesma aplicação né !?
Quer que sua aplicação se comporta como Cliente e Servidor?
Se for isso, nada te impede de fazer duas aplicações rodando no desktop e eles conversarem entre si e oferecer saidas e entradas de dados.
W
wldomiciano
Pela descrição, ele não quer o modelo cliente-servidor.
Ele tem um JFrame e quer que este JFrame seja gerenciado pelo container de injeção de dependencia.
Se no JFrame ele exibe uma lista, como no meu exemplo, ele não quer enviar uma requisição HTTP, mesmo que local, para pegar esta lista, ele quer pegar esta lista direto do repository. No meu exemplo eu ainda coloquei uma camada de service.