Vorrei utilizzare le funzionalità di spring-boot-starter-data-jpa per creare un'applicazione non web. Nella documentazione 52,4 dice:Come configurare spring-boot con applicazione swing
codice dell'applicazione che si desidera eseguire come la logica di business può essere implementato come un CommandLineRunner e si lasciò cadere il contesto come una definizione @Bean .
mio AppPrincipalFrame assomiglia:
@Component
public class AppPrincipalFrame extends JFrame implements CommandLineRunner{
private JPanel contentPane;
@Override
public void run(String... arg0) throws Exception {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
AppPrincipalFrame frame = new AppPrincipalFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
E avvio classe di applicazione assomiglia:
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(Application.class, args);
AppPrincipalFrame appFrame = context.getBean(AppPrincipalFrame.class);
}
}
Ma non funziona. Qualcuno ha un esempio su questo?
Modificato e aggiunto.
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'appPrincipalFrame'.
Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [es.adama.swing.ui.AppPrincipalFrame]: Constructor threw exception; nested exception is java.awt.HeadlessException
Cordiali saluti.
Che cosa "non funziona"? C'è un'eccezione? Log? –
@DaveSyer Sì, aggiunta eccezione riepilogativa. – Dapaldo
Spring ha chiamato il costruttore e se non è riuscito. Sembra che il costruttore verrà chiamato due volte (una volta in Spring per creare il tuo '@ Component' e una volta nel suo metodo' run() '). Leggermente bizzarro, quindi forse non intendevi uno di quelli? –