2016-01-21 79 views
1

我使用的是最後一個Spring Boot,我只是neet運行一個方法並在最後一條指令後停止程序執行,就像àmain一樣。如何使用Spring Boot運行一個簡單的主體

中庸之道需要運行這個方法:

public class Main { 

    @Autowired 
    private MyService myService; 

    public void run() throws IOException { 
     System.out.println(myService.listAll()); 
    } 
} 

和應用程序類是一個簡單的Spring引導運行

@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
public class Application { 
    public static void main(String[] args) throws IOException { 
     SpringApplication.run(Application.class, args); 
    } 
} 

那麼,如何告訴春天開機運行Main.run()用命令如java -jar myapp.jar?

謝謝

+0

http://docs.spring.io/spring-boot/docs/ current/reference/htmlsingle /#howto-create-a-non-web-application,http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/CommandLineRunner.html –

+0

Tomcat沒有試圖運行。異常是com.myapp.ronaldeMigration.api.SchemaRegistryApi.get()中的代碼使用Apache HTTP Client對'localhost:8081'進行HTTP調用的結果。沒有任何監聽端口8081,因此HTTP調用失敗。 –

+0

謝謝它的作品! – Maryo

回答

3

讓您Main實施CommandLineRunner@Component所以對它進行註釋,它的通過組件掃描發現:

@Component 
public class Main implements CommandLineRunner { 

    private final MyService myService; 

    @Autowired 
    Main(MyService myService) { 
     this.myService = myService; 
    } 

    @Override 
    public void run(String... args) throws IOException { 
     System.out.println(this.myService.listAll()); 
    } 
} 
+0

謝謝,但它不起作用。 2016-01-22 11:57:02.617信息1016 --- [main] sbcetTomcatEmbeddedServletContainer:Tomcat啓動端口:8080(http) 2016-01-22 11:57:03.077錯誤1016 --- [主] osboot.SpringApplication:應用啓動失敗 java.lang.IllegalStateException:未能執行ApplicationRunner \t所致:org.apache.http.conn.HttpHostConnectException:連接到本地主機:8081 [本地主機/ 127.0.0.1,本地主機/ 0:0:0:0:0:0:0:1]失敗:連接被拒絕導致:java.net.ConnectException:連接被拒絕 – Maryo

+0

這看起來像代碼中的錯誤。有些東西試圖連接到localhost:8081,並且沒有任何東西在該端口上偵聽。它也看起來像你啓動Tomcat。你爲什麼在你想自動退出的應用程序中這樣做?除非明確關閉JVM,否則Tomcat的非守護線程將使JVM保持活動狀態。 –

+0

它的工作原理!謝謝 – Maryo

相關問題