Spring Boot Stand Alone(非Web)应用示例

时间:2020-01-09 10:44:32  来源:igfitidea点击:

在Spring Boot Hello World Web应用程序一文中,我们已经了解了如何创建Spring Boot Web应用程序,在本文中,我们将了解如何编写一个Spring Boot独立(非Web)应用程序。

Maven依赖

对于独立的应用程序,除了需要增加spring-boot-starter-parent的依赖之外,还需要添加spring-boot-starter的依赖。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.theitroad</groupId>
  <artifactId>SpringBootProject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
  </parent>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

申请类别

我们将添加一个简单的服务来返回消息。

import org.springframework.stereotype.Service;

@Service
public class HelloWorldService {
  public String getGreeting(String name) {
    return "Hello " + name;
  }
}

具有主方法的应用程序类

这是带有组件的应用程序类。对于Spring Boot非Web应用程序,Application类实现CommandLineRunner,这是一个功能接口。在应用程序类中,必须实现此接口的run方法,这是用于运行bean的回调。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class FirstSpringBootApp implements CommandLineRunner {
  @Autowired
  HelloWorldService helloWorldService;
  public static void main(String[] args) {
    SpringApplication.run(FirstSpringBootApp.class, args);
  }

  public void run(String... args) throws Exception {
    System.out.println(helloWorldService.getGreeting(args[0]));		
  }
}

@SpringBootApplication是一个方便注释,它添加了以下所有注释

  • @Configuration注释将类标记为应用程序上下文的Bean定义的源。
  • @EnableAutoConfiguration告诉Spring Boot启用自动配置,以便基于类路径设置,其他bean和各种属性设置自动创建bean。例如,starter spring-boot-starter-web添加了Tomcat和Spring MVC,因此自动配置假定我们正在开发Web应用程序并相应地设置Spring,其中包括设置DispatcherServlet。
  • @ComponentScan告诉Spring递归地查找该包中的其他组件,配置和服务并注册它们。

由于该属性在该类中使用@Autowired注释进行了注释,因此HelloWorldService会自动作为Bean依赖项注入到此类中。

主要方法是应用程序入口点,该入口点通过调用run委托给Spring Boot的SpringApplication类。 SpringApplication引导此HelloWorld应用程序启动Spring,该Spring反过来调用CommandLineRunner的run方法实现。

运行应用程序

我们可以直接从IDE或者通过创建可执行jar来运行此Spring Boot Hello World应用程序。要直接从Eclipse IDE运行

右键单击FirstSpringBootApp.java –运行方式–运行配置

提供应用程序的程序参数。

创建可执行jar

要创建完全独立的可执行jar文件,请从命令行运行mvn package。

F:\theitroad\Spring WorkSpace\SpringBootProject>mvn package

要使用创建的jar运行应用程序,请使用java -jar命令以及一个参数,如下所示:

java -jar target\SpringBootProject-0.0.1-SNAPSHOT.jar theitroad

 :: Spring Boot ::        (v2.1.6.RELEASE)

2019-07-28 10:36:16.686  INFO 6520 --- [           main] com.theitroad.app.FirstSpringBootApp       : No active profile set, falling back to default profiles: default
2019-07-28 10:36:18.525  INFO 6520 --- [           main] com.theitroad.app.FirstSpringBootApp       : Started FirstSpringBootApp in 3.708 seconds (JVM running for 6.762)
Hello theitroad