购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1.3 开发基本的Web应用

在开发应用前,需要先考虑如何组织项目中大量的类和接口文件,通常情况下,Spring Boot项目中的控制器类(Controller)会被组织并存放在一个名为controller的包中。这是一种通用的约定,用于将控制器与其他组件(如服务、模型等)分开进行组织。

Spring Boot没有严格的项目结构,但它有一些约定和最佳实践,这些最佳实践使得代码更加整洁,模块化,并有助于自动配置的正常工作。以下是一个典型的Spring Boot项目的包结构,如表2-1所示。

表2-1 Spring Boot项目包结构

这只是一个基础的结构。随着应用的扩展,你可能会添加其他包,如exceptions(自定义异常)、security(安全配置)、constants(常量类)等,以适应不同的需求和复杂性。

这种包结构有助于清晰地组织不同类型的组件,提高代码的可维护性和可读性。根据项目的规模和需求,可以适当地调整和定制这个结构。

构建一个能够响应用户请求的Web服务,只需要经过以下三步。

(1)引入spring-boot-starter-web依赖。

(2)创建一个带有@RestController注解的类。

(3)在此类中定义一些带有@RequestMapping或其相关注解(如@GetMapping、@PostMapping等)的方法。

因为spring-boot-starter-web依赖在创建项目时已经加入,所以接下来详细介绍后续的两个步骤。

首先,在demo项目的根包(com.example.demo)下创建controller包,并在此包下新建名为BookController的类,代码如下。

    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import java.util.Arrays;
    import java.util.List;
 
    @RestController
    public class BookController {
        @GetMapping("/books")
        public List<String> getAllBooks() {
            return Arrays.asList("The Great Gatsby", "Moby Dick", "War and Peace");
        }
    }

该代码定义了一个简单的Spring Boot控制器,控制器返回一份书籍列表,其中:

@RestController是一个Spring的特殊注解,表示这个类是一个RESTful Web服务的控制器,该控制器返回的对象会自动被转换为JSON响应。

@GetMapping("/books")是一个方法级的注解,表示当用户向/books发送一个GET请求时,该方法会被调用。

getAllBooks()方法是为了处理前面@GetMapping("/books")定义的路径请求,当此方法被调用时(即当有人请求/books路径时),它会返回这三本书的名字。

当启动应用程序后,可以通过浏览器访问http://localhost:8080/books来获取所有书籍列表,会得到以下的JSON响应。 z8XGjDVjSeFaKZ8wAdXNKoSfR1sQRQHA9PvK76tEdEGMoUdCwH34/2nowBM3HBn4

    ["The Great Gatsby", "Moby Dick", "War and Peace"]
点击中间区域
呼出菜单
上一章
目录
下一章
×