2016-10-31 6 views
1

私は適切な用語がわかりませんが、 "ワンショット"プログラムでは、私は主な機能の開始から終了まで実行するプログラムを意味しました。することができます "ワンショット"プログラムでスプリングブートを使用することができます

通常、私は、このような定型でそれを行う:

AnnotationApplicationContext ac = new AnnotationApplicationContext("myConfigClass") 
MyBean myStuff = ac.getBean("myBean"); 
myStuff.doSomething(); 
ac.flush(); 
ac.close(); 

私はまだ春の良い取引を使用することができ、そのようなプログラミングを提供しています。しかし、私がSpringブートを試してみたとき、私は単純にこれをやっています(私の頭の上にスニペットを書くと構文ミスを無視してください) - プログラミングがより簡単になると思っていました(行数を減らし注釈を少なくしました):

@SpringBootApplication 
public class App { 
    public static void main(String[] args){ 
    SpringApplication.run(App.class); 
    } 
} 

しかし、プログラムを起動した後、明示的に強制終了されるまでサービスとして残っていることに気付きました。

私の質問は、SpringbootはSpring MVCやWebサービススタイルのサービスのようなWebアプリケーションにのみ適していますか?それは単純な「ワンショット」プログラムのためのものではありませんか?関連する質問は次のとおりです:SpringBootApplicationが採用されて実行されると、埋め込みのTomcat(またはJitty)が常に起動しますか?

希望私は自分自身を理解しました。誰でも助けることができますか?

+0

可能性のある重複したサーバーを必要としません[春ブーツ:アプリケーションを終了しているときに例外](http://stackoverflow.com/質問/ 35936125/spring-boot-exception-while-exiting-application) – Patrick

+0

はい可能です。 [私の答え](http://stackoverflow.com/a/35936627/3493036)を見てください。 – Patrick

+0

春のブート時のTomcatについてのさらに詳しい情報:[Webサーバーを使用しないSpring Boot](http://stackoverflow.com/a/26105252/2425682) –

答えて

2

あなたはCLR(CommandLineRunner)と春のブートアプリケーションを実行する場合は、あなたがの

@SpringBootApplication 
public class App implements CommandLineRunner { 

    @Autowired 
    private MyBean myStuff; 

    public static void main(String[] args) { 
     SpringApplication.run(App.class, args); 
    } 

    public void run(String... strings) throws Exception { 
     myStuff.doSomething(); 
    } 
} 
関連する問題