我如何Spring-ify我的独立(非Web服务)应用程序?

时间:2018-06-13 20:55:25

标签: spring-boot

我有一个使用Postgres的独立应用程序,具有以下功能 粗糙结构:

class myClass {

     public myClass( String filePath ) {...}

     public void calculate( ...args... ) {...}

     public static void main(String[] args) {
          ...process args...
          new myClass(...).calculate(...)
     }
}

我正在尝试将其转换为Spring Boot应用程序以利用它 Spring JDBC。这是粗略的结构,是对上述内容的修改:

@SpringBootApplication
class myClass implements implements CommandLineRunner {

     public myClass( String filePath ) {...}

     public void calculate( ...args... ) {...}

     public static void main(String[] args) {
         SpringApplication.run( myClass.class, args);
     }
     @Override
     public void run(String... args) throws Exception {
         ...process args...
         new myClass(...).calculate(...)
     }
}     

当我尝试从Eclipse运行它时,我收到以下错误消息:

Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.

为什么会发生这种情况,我该怎么做才能解决这个问题?而且,为什么它甚至抱怨" WebApplication", 因为我在build.gradle中没有包含任何与Web或Controller有关的内容。

1 个答案:

答案 0 :(得分:0)

我能够通过稍微修改我的main方法的结构来找到上述错误的解决方案:

@SpringBootApplication
class myClass implements implements CommandLineRunner {

     public myClass( String filePath ) {...}

     public void calculate( ...args... ) {...}

     public static void main(String[] args) {
         SpringApplication application = new SpringApplication( myClass.class );
         application.setWebEnvironment( false );
         application.run( args );
     }
     @Override
         public void run(String... args) throws Exception {
             ...process args...
             this.calculate(...)   <<<=== Note change here, too
     }
}