Spring Boot Stand Alone(非Web)应用示例
在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