可以在一次拍摄中使用Spring启动"程序

时间:2016-10-31 15:12:02

标签: java spring web-services spring-mvc spring-boot

我不知道什么是合适的术语,但通过"一次拍摄"程序我的意思是一个从主函数开始到结束并退出的程序。

通常我会用这样的样板来做:

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

我仍然可以使用大量的Spring功能编程。然而,当我尝试Spring启动时,我只是这样做(请忽略语法错误,因为我在我的脑海中涂写了片段) - 它认为它进一步简化了编程(使用更少的行和更少的注释):< / p>

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

但是,我注意到该程序在启动后仍作为服务保留,直到被明确杀死。

因此,我的问题是:Springboot是否仅适用于Spring MVC或Web服务式服务等Web应用程序?而且它并不意味着简单的一次拍摄&#34;程式?一个相关的问题是:当使用和运行SpringBootApplication时,嵌入式tomcat(或Jitty)是否始终启动?

希望我让自己明白了。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

如果使用CLR(CommandLineRunner)运行Spring启动应用程序,则不需要服务器

@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();
    }
}