基于SpringBoot开发一套完整的项目(二)准备工作

1.SpringBoot框架内容

        想了一下,觉得在开发之前应该先大致了解一下springboot框架的概括,然后在后面的开发过程中再进一步加深理解,做到知其然知其所以然!

Spring Boot 是基于Spring 框架技术来构建的,所以Spring Boot 又会使用很多Spring 框架中的技术。要了解springboot不可避免的我们要了解好spring框架。

        Spring 框架是模块化的,允许用户自由选择需要使用的部分。Spring 框架支持声明式事务管理,并支持多种选择来持久化用户的数据,它提供了一个全功能的Spring MVC 及Spring WebFlux 框架。

简单说一下Spring MVC,MVC 由以下三部分组成

    ①模型( Model ):应用程序的核心功能,管理这个模块中用到的数据和值。
    ②视图( View ): 视图提供模型的展示,管理模型如何显示给用户,它是应用程序的外观。

    ③控制器(Controller):对用户的输入做出反应,管理用户和视图的交互,是连接模型和视图的枢纽。、

    Spring MVC 使用 @Controller 或 @RestController 注解的 bean 来处理传人的HTTP 请求。使用@RequestMapping 注解将HTTP 请求映射到相应的控制器中的方法。

MVC不是三层架构,而是三层架构中的表现层。

基于SpringBoot开发一套完整的项目(二)准备工作_第1张图片

而Spring Boot 提供了适用于大多数应用程序的Spring MVC 的自动配置。

     ①包含ContentNegotiatingViewResolver bean 和BeanNameViewResolver bean 。
     ②支持静态资源的服务,包括对WebJars 的支持。
     ③自动注册Converter 、GenericConverter 、Formatter 等bean。
     ④支持HttpMessageConverterrs。
     ⑤自动注册MessageCodesResolver。
     ⑥支持静态index.html。
     ⑦支持自定义Favicon。

     ⑧自动使用ConfigurableWebBindingInitializer bean。

静态内容

          默认情况下, Spring Boot 将从类路径或ServletContext 的根中名为/static 、/public 、/resources 、/META-INF/resources 的目录下加载静态内容,它使用SpringMVC 中的ResourceHttpRequestHandler来实现,但也可以通过 spring.mvc.static-path-pattern来调整。例如:


模板引擎
          对于动态HTML 内容的展示,对于Spring Boot 而言,它支持FreeMarker 、Groovy 、Thyme leaf、Mustache 等引擎的自动配置功能。
        由于Thymeleaf “原型即页面”,能够让前后端分离,所以在后面我也是使用Thymeleaf。
        接下来将演示如何使用Spring MVC 来处理JSON 格式的数据,JSON (JavaScript Object Notation )是一种轻量级的数据交换格式, 具有良好的可读和便于快速编写的特性。

演示

在hello-world 项目源码的基础上创建一个demoUserJson项目作为演示;

创建实体User和UserController

基于SpringBoot开发一套完整的项目(二)准备工作_第2张图片

代码如下:

User实体类:

package com.duxihu.helloworld.domain;

public class User {

    private Long id;//唯一标识

    private  String name;

    private  Integer age;

    public User() {//无参默认构造器
    }

    public User(Long id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

UserController 

package com.duxihu.helloworld.controller;

import com.duxihu.helloworld.domain.User;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/user")
public class UserController {

    @RequestMapping("/{id}")
    public User getUser(@PathVariable("id") Long id){
        return new User(id,"duxihu",25);
    }
}
运行项目后,在浏览器里访问 localhost:8080/user/1接口,返回的是JSON 类型数据。

基于SpringBoot开发一套完整的项目(二)准备工作_第3张图片

为什么没有做任何特殊设置,User可以被自动转成JSON 格式?

进入下面的spring-boot-starter-web依赖可以看到

<dependency>
   <groupId>org.springframework.bootgroupId>
   <artifactId>spring-boot-starter-webartifactId>
dependency>
该项目依赖了spring-boot-starter-json 这个专门用于处理JSON 的Starter。

<dependency>
  <groupId>org.springframework.bootgroupId>
  <artifactId>spring-boot-starter-jsonartifactId>
  <version>2.0.2.RELEASEversion>
  <scope>compilescope>
dependency>

再进入spring-boot-starter-json依赖可以看到,主要依赖的是jackson的库。

<dependency>
  <groupId>com.fasterxml.jackson.coregroupId>
  <artifactId>jackson-databindartifactId>
  <version>2.9.5version>
  <scope>compilescope>
dependency>
<dependency>
  <groupId>com.fasterxml.jackson.datatypegroupId>
  <artifactId>jackson-datatype-jdk8artifactId>
  <version>2.9.5version>
  <scope>compilescope>
dependency>
<dependency>
  <groupId>com.fasterxml.jackson.datatypegroupId>
  <artifactId>jackson-datatype-jsr310artifactId>
  <version>2.9.5version>
  <scope>compilescope>
dependency>
<dependency>
  <groupId>com.fasterxml.jackson.modulegroupId>
  <artifactId>jackson-module-parameter-namesartifactId>
  <version>2.9.5version>
  <scope>compilescope>
dependency>

        Jackson2 库是非常流行的处理JSON 的类库。只要将Jackson2 放在classpath 上, Spring Boot应用程序中的任何使用了@RestController 注解的类,都会默认呈现JSON 格式数据的响应。


你可能感兴趣的:(springboot)