Spring Boot-第一个RESTful项目

春招及春招后的这一段时间都比较懒,好久没写博客记录了。
这次呢,主要介绍下Spring Boot框架的使用,本来之前用过spring, spring-mvc后繁杂的配置及困难的配置出错排查让我对java web丧失了兴趣,不过后来看了下spring boot又看到了希望,极少的配置能把精力放到业务逻辑实现上。
废话不多说,快来看看吧。

Spring Boot简介及特点

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是
用来简化新Spring应用的初始搭建以及开发过程。

它具有以下特点:

  • 为基于Spring的开发提供更快的入门体验
  • 开箱即用,没有代码生成,也无需XML配置。同时也可以修改默认值来满足特定的需求。
  • 提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。
  • Spring Boot并不是不对Spring功能上的增强,而是提供了一种快速使用Spring的方式。

新建项目

开发工具使用IntelliJ IDEA专业版
项目类型选择Spring Initializr,初始服务连接默认就行

Spring Boot-第一个RESTful项目_第1张图片

填写项目信息,packaging是打包类型,有jar和war两种,可以直接把整个项目打包成一个jar包,直接用jar包部署

Spring Boot-第一个RESTful项目_第2张图片

这一步可以直接选择各种依赖,这里选一个web构建restful web服务

Spring Boot-第一个RESTful项目_第3张图片

项目结构

先来看下项目的主要结构,各个文件的作用

Spring Boot-第一个RESTful项目_第4张图片

程序入口

src/main/java下的程序入口:HelloSpringBootApplication
该类由@SpringBootApplication修饰,功能是@Configuration,@EnableAutoConfiguration,@ComponentScan三个注解结合。

其中@EnableAutoConfiguration作用:Spring Boot会自动根据你jar包的依赖来自动配置项目,因此建议只有一个带有该注解的类。

启动项目
启动Spring Boot项目最简单的方法就是执行下面的方法:

SpringApplication.run(Application.class, args);

该方法返回一个ApplicationContext对象,使用注解的时候返回的具体类型是AnnotationConfigApplicationContext或AnnotationConfigEmbeddedWebApplicationContext,当支持web的时候是第二个。

除了上面这种方法外,还可以用下面的方法:

SpringApplication application = new SpringApplication(Application.class);
application.run(args);

SpringApplication包含了一些其他可以配置的方法,如果你想做一些配置,可以用这种方式。

除了上面这种直接的方法外,还可以使用SpringApplicationBuilder:

new SpringApplicationBuilder()
        .showBanner(false)
        .sources(Application.class)
        .run(args);

当使用SpringMVC的时候由于需要使用子容器,就需要用到SpringApplicationBuilder,该类有一个child(xxx...)方法可以添加子容器。

pom.xml

项目的依赖库及插件等信息

  1. 父pom

        org.springframework.boot
        spring-boot-starter-parent
        2.0.2.RELEASE
         
    

父pom比较简单,而且spring-boot-starter-parent包含了大量配置好的依赖管理,在自己项目添加这些依赖的时候不需要写版本号。

  1. Web模块

            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        

spring-boot-starter-test:测试模块,包括JUnit、Hamcrest、Mockito

  1. spring-boot-maven-plugin插件

                org.springframework.boot
                spring-boot-maven-plugin
            

该插件支持多种功能,常用的有两种,第一种是打包项目为可执行的jar包。
在项目根目录下执行mvn package将会生成一个可执行的jar包,jar包中包含了所有依赖的jar包,只需要这一个jar包就可以运行程序,使用起来很方便

其他

  • src/main/resources下的配置文件:application.properties
    以后Spring boot的主要配置就写在这里面
  • src/test/下的测试入口:Chapter1ApplicationTests
  • resources下:static放静态资源,templates放模板页面

实现RESTful接口

效果

当我们get请求

http://localhost:8080/greeting

返回json格式的回应

{"id":1,"content":"Hello, World!"}

也可以请求时传入name参数

http://localhost:8080/greeting?name=User

返回

{"id":1,"content":"Hello, User!"}

coding

  1. 首先添加相应的bean
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;
    }
}
  1. 添加Controller
    添加相应的Controller相应请求
@RestController
public class GreetingController {

    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @RequestMapping("/greeting")
    public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
        return new Greeting(counter.incrementAndGet(),
                            String.format(template, name));
    }
}

AtomicLong 是原子类,来产生递增的id值,同时保证并发时数据的准确性。
greeting方法的请求地址映射为http://localhost:8080/greeting,同时用@RequestParam接收请求参数,默认值为World,方法内直接返回一个Greeting对象,它将自动转换为json,因为spring boot已经内置了相关json转化依赖

Spring Boot-第一个RESTful项目_第5张图片

同时@RestController是@Controller 和 @ResponseBody结合

可以看到实现时我们没写一句配置,解放劳动力啊!

(使用mybatis实现较复杂的RESTful项目,可以看我这个项目,就不写了... https://github.com/biloba123/Reptile)

你可能感兴趣的:(Spring Boot-第一个RESTful项目)