Spring框架学习笔记(二):编写一个简单的RESTful Web Service

Spring官网Guides部分,提供了数十个简短的学习用例,个人感觉是非常好的学习资源,今天的学习就是该Guides的第一个例子:开发一个简单的RESTful Web Service。该例子的英文页面为:https://spring.io/guides/gs/rest-service/

  1. 使用Spring Initializr构建pom.xml文件
    通常,构建Spring应用程序的第一步都是使用spring initializr构建一个描述项目的pom.xml文件,然后就可以使用maven来管理该开发项目。Spring initializr是spring官方提供的一个在线工具,其地址为:https://start.spring.io/
    打开initializr页面后
    Project项选择Maven Project;
    Language项选择Java;
    Spring Boot项选择你希望的spring版本,我通常选择正式release的版本,就是不带M1和SNAPSHOT标志的版本。
    Group项可以填开发单位的信息,我是个人,所以我填我名字的拼音com.boliang。
    Artifact项可以填项目的名称,我填restservice。
    Dependencies项为该项目依赖的其他组件,这里我们只依赖于Spring Web
    最后点击"Explore - Ctrl + Space"按钮,可以查看在线生成的pom.xml文件,之后可以选择将该文件下载到本地的项目文件夹。
  2. 在项目的src/main/java/目录下创建Greeting.java文件,内容如下:
    package com.boliang.restservice;
    
    public class Greeting {
    
    	private final long id;
    	private final String content;
    
    	public Greeting(long id, String content) {
    		this.id = id;
    		this.content = content;
    	}
    
    	public long getId() {
    		return id;
    	}
    
    	public String getContent() {
    		return content;
    	}
    }
  3. 在项目的src/main/java/目录下创建GreetingController.java文件,内容如下:
    package com.boliang.restservice;
    
    import java.util.concurrent.atomic.AtomicLong;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class GreetingController {
    
    	private static final String template = "Hello, %s!";
    	private final AtomicLong counter = new AtomicLong();
    
    	@GetMapping("/greeting")
    	public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
    		return new Greeting(counter.incrementAndGet(), String.format(template, name));
    	}
    }

    @RestController 注释表示GreetingController 类是一个控制器
    @GetMapping 注释表示greeting方法对应到对/greeting URI的GET方法上
    @RequestParam 注释表示将http请求中的name参数的是值对应到greeting方法的name参数。

  4. 在项目src/main/java/目录下创建RestService.java,内容为如下:
    package com.boliang.restservice;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class RestService {
    
    	public static void main(String[] args) {
    		SpringApplication.run(RestService .class, args);
    	}
    
    }
    
  5. 运行
    在pom.xml所在的项目目录下运行以下命令:
    mvn spring-boot:run

    接下来你会看到maven自动下载一大堆东西,这个过程可能会比较久,耐心等待一会,你会看到spring运行的界面:
     

      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::        (v2.2.4.RELEASE)
    
    2020-02-07 21:47:58.269  INFO 15088 --- [           main] com.boliang.restservice.RestService      : Starting RestService on DESKTOP-N0EF3ON with PID 15088 (C:\Users\bolia\eclipse-workspace\rest-service\target\classes started by bolia in C:\Users\bolia\eclipse-workspace\rest-service)
    2020-02-07 21:47:58.272  INFO 15088 --- [           main] com.boliang.restservice.RestService      : No active profile set, falling back to default profiles: default
    2020-02-07 21:47:59.403  INFO 15088 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
    2020-02-07 21:47:59.415  INFO 15088 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2020-02-07 21:47:59.419  INFO 15088 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.30]
    2020-02-07 21:47:59.531  INFO 15088 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
    2020-02-07 21:47:59.533  INFO 15088 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1192 ms
    2020-02-07 21:47:59.712  INFO 15088 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
    2020-02-07 21:47:59.890  INFO 15088 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
    2020-02-07 21:47:59.898  INFO 15088 --- [           main] com.boliang.restservice.RestService      : Started RestService in 2.071 seconds (JVM running for 2.526)
    
  6. 访问服务
    接下来打开浏览器,在地址栏输入:http://127.0.0.1:8080/greeting 将可以看到:
    {"id":1,"content":"Hello, World!"}
    我们还可以加上一个参数,在地址栏输入:http://127.0.0.1:8080/greeting?name=liangbo 将可以看到:
    {"id":1,"content":"Hello, liangbo!"}

  7. 结束程序可以按Ctrl+C

  8. 打包
    在项目根目录输入:

    mvn package

    命令执行完成以后,在target目录下会生成 restservice-0.0.1-SNAPSHOT.jar,文件大概在10多兆,这是打包了所有依赖库的包,可以直接在java环境中运行。
     

  9. 运行jar
    在项目根目录输入:

    java -jar target/restservice-0.0.1-SNAPSHOT.jar

    然后就可以看到类似第5步的运行界面。
    至此,此例完成。

发布了41 篇原创文章 · 获赞 7 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/boliang319/article/details/104215275