Spring MVC教程:学习建立RESTful Web应用

Spring MVC教程:学习建立RESTful Web应用

这样做的好处是使用@SpringBootApplication注解标注Application类的时可以省略指定scanBasePackages属性,并且应用启动时默认只扫描Application类所在的包及其子包。

2.代码实践

以银行信息的Web服务为例,编写处理多种请求的银行信息服务。

首先,新建Gradle项目并添加spring-boot-starter-web模块,具体代码如下:

plugins {

id ‘java’

}

group ‘spring-boot’

version ‘1.0-SNAPSHOT’

sourceCompatibility = 1.8

repositories {

jcenter()

}

dependencies {

compile(“org.springframework.boot:spring-boot-starter-web:2.0.0.RELEASE”)

testCompile(“org.springframework.boot:spring-boot-starter-test:2.0.0.RELEASE”)

}

编写应用启动类Application.java,具体代码如下:

@SpringBootApplication

public class Application {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

编写银行实体类Bank.java,具体代码如下:

public class Bank implements Serializable{

private Long id;

private String bankName;

private String bankCode;

//省略getter和setter

}

编写银行信息Web服务接口类BankController.java,具体代码如下:

@RestController

@RequestMapping(“/banks”)

public class BankController {

//根据id查询银行信息

@RequestMapping(value = “/{id}”, method = RequestMethod.GET)

public Bank getBank(@PathVariable Long id) {

return Bank.newbuilder()

.withId(id)

.withBankName(“中国工商银行”)

.withBankCode(“ICBC”)

.build();

}

//查询全部银行信息

@RequestMapping(value = “/list”, method = RequestMethod.GET)

public List getAllBanks() {

Bank icbc = Bank.newBuilder()

.withId(100L)

.withBankName(“中国工商银行”)

.withBankCode(“ICBC”)

.build();

Bank cmb = Bank.newBuilder()

.withId(101L)

.withBankName(“中国招商银行”)

.withBankCode(“CMB”)

.build();

return new ArrayList() {

{

add(icbc);

add(cmb);

}

};

}

//新建一条银行信息

@RequestMapping(value = “/create”, method = RequestMethod.POST)

public String create(@ModelAttribute Bank bank) {

//省略校验及保存操作

return “SUCCESS”;

}

//根据id删除一条银行信息

@RequestMapping(value = “/del/{id}”, method = RequestMethod.DELETE)

public String delete(@PathVariable Long id) {

//省略删除操作

return “SUCCESS”;

}

//修改一条银行信息

@RequestMapping(value = “/put/{bankId}”, method = RequestMethod.PUT)

public String update(@PathVariable Long bankId, @ModelAttribute Bank bank) {

//省略查询、更新操作

return “SUCCESS”;

}

}

运行Application类的main方法就可以提供银行信息Web服务了,可以使用postman工具发送请求验证。

3.代码解析

BankController中使用到了@RestController、@RequestMapping、@PathVariable和@ModelAttribute注解,这些都是SpringMVC框架的spring-web包中的注解。

@RestController:它是Spring4.0新增的注解,具有@Controller注解和@ResponseBody注解的功能,使用@ResponseBody注解标注后,默认返回的数据格式是json;

@RequestMapping:标注在类和方法上,用于将web请求映射到请求处理类和类中的方法上;

@PathVariable:标注在方法参数上,用于将请求中的URI模板变量值绑定到标注的参数上,需要配合@RequestMapping注解一起使用;

@ModelAttribute:标注在方法或方法参数上,用于将请求参数绑定到指定模型上,需要配合@RequestMapping注解一起使用;

代码中除了上述这些配置并不需要其它配置了,因为Spring Boot提供了Spring MVC的自动配置功能,这些自动的配置是根据项目依赖的jar自动开启的,其实是@EnableAutoConfiguration注解的功劳,具体如何实现自动配置的,在《深入Spring Boot (一):快速入门》中已经详细解析过。

Spring Boot虽说提供了自动默认配置,但有时可能需要改变某些默认配置,后续篇幅将深入介绍如何修改这些默认配置。

本站部分内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规等内容,请举报!一经查实,本站将立刻删除。
本站部分内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规等内容,请<举报!一经查实,本站将立刻删除。