Chciałbym użyć funkcji spring-boot-starter-data-jpa, aby stworzyć aplikację inną niż webowa. W dokumentacji 52,4 mówi:Jak skonfigurować wiosenny rozruch z aplikacją swingową?
Kod aplikacji, które chcesz uruchomić jako logiki biznesowej można zaimplementowany jako CommandLineRunner i spadł w kontekście jako @Bean definicji.
Moja AppPrincipalFrame wygląda następująco:
@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();
}
}
});
}
I rozruchu klasa aplikacja wygląda następująco:
@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);
}
}
Ale nie działa. Ktoś ma przykład na ten temat?
Edytowano i dodano wyjątek.
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
Pozdrawiam.
Co to jest "nie działa"? Czy istnieje wyjątek? Logi? –
@DaveSyer tak, dodano wyjątek podsumowany. – Dapaldo
Wiosna wywołała twój konstruktor i jeśli się nie powiodła. Wygląda na to, że ten konstruktor zostanie wywołany dwa razy (raz na wiosnę, aby utworzyć '@ Component' i raz w swojej własnej metodzie' run() '). Nieco dziwne, więc może nie zamierzałeś jednego z nich? –