一、新特性

依赖java 8+

支持Kotlin语言,主要底层框架采用了(Spring Framwork 5.0X)

支持全新特性:Web Flux(一种新的编程模型,是对传统的Spring MVC做了一种补充)

为什么选择Web Flux?

  • 支持函数编程:Java 8 Lambda

  • 响应式编程:Reactive Streams,主要是指的一个规范

  • 异步编程:Servlet 3.1或者Asyc NIO

二、使用简单Web Flux

场景:发送GET请求,获取所有用户(Web Flux和Web MVC)

业务:通过GET请求,添加用户;存储在Map中,再通过findAll获取之前添加的所有用户

1.创建项目

2.检查pom.xml文件;发现它和web时所用到的dependency完全不一样。

MVC模式同web,结构如下:

关键代码如下:

public class User {private Integer id;private String name;//get/set方法@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + "]";}
/*** dao,数据访问对象* 由两部分组成{@link User}{@link Repository}* version 1.0* TODO*/
@Repository
public class UserRepository {/*** 采用内存的存储方式 -> Map*/private ConcurrentMap<Integer, User> repository = new ConcurrentHashMap<>();/*** Id采用自增长的方式*/private final static AtomicInteger idGenerator = new AtomicInteger();/*** 保存用户对象* @param user {@link User}对象* @return */public boolean save(User user){//ID从1开始Integer id = idGenerator.incrementAndGet();user.setId(id);//返回null,说明保存成功return repository.put(id, user)==null;}/*** 返回所有用户列表* @return*/public Collection<User> findAll(){return repository.values();}
}
@RestController
public class UserController {//采用构造器的注入方式/*** 1.不能修改* 2.可以提早进行初始化*/private final UserRepository userRepository;@Autowired  //可写,可无public UserController(UserRepository userRepository) {this.userRepository = userRepository;}@PostMapping(value="/person/save")public User save(@RequestParam String name){User user = new User();user.setName(name);if(userRepository.save(user)){System.out.println("用户对象:"+user+"保存成功!");}return user;}@GetMapping(value="/persons")public Collection<User> findAll(){return userRepository.findAll();}
}

页面测试访问页面如下:

逐次添加2个用户

由findAll()方法获取所有用户

重点:

在使用Web Flux时有什么区别呢?

Web Flux是Spring 5.X的新特性,支持lambda 等特性,详情后续添加

在此基础上需要增加FunctionConfiguration类

/*** 路由器函数 配置* version 1.0* TODO java版的xml文件*/
@Configuration
public class RouterFunctionConfiguration {/*** Servlet* 请求接口:ServletRequest或者HttpServletRequest* 响应接口:ServletResponse或者HttpServletResponse* * Spring 5.0 重新定义了服务请求和相应接口* 请求接口:ServerRequest* 响应接口:ServerResponse* 即支持Servlet规范,也可以支持自定义,例如Netty(Web Server)* @return 定义GE请求,返回所有用户对象* Flux 是  0 - N 个对象集合* Mono 是  0 - 1  个对象集合* Reactive中的Flux或者Mono它是异步处理(非阻塞)* 集合对象基本上是同步处理的(阻塞)* Flux或者Mono都是Publisher  提高吞吐量*/@Bean@Autowiredpublic RouterFunction<ServerResponse> findAll(UserRepository userRepository){Collection<User> users = userRepository.findAll();return RouterFunctions.route(RequestPredicates.GET("/person/all"), request ->{Flux<User> userFlux = Flux.fromIterable(users);return ServerResponse.ok().body(userFlux,User.class);});}
}

由页面访问结果得知:结果为正确指向;

本次操作只简单涉及Web Flux,由于设计知识点较多,后续慢慢更新;

三、多模块项目

多模块项目的层级:

  1. 调整主工程的打包类型

  2. 子模块依赖管理

第1步:修改pom.xml文件

第2步:选中当前maven项目,右键-->module

第三步:起个“web”项目名称,其他下一步

第四步:检查父项目的pom.xml文件和web项目的pom.xml文件

待续... ...

转载于:https://blog.51cto.com/mazongfei/2135781

spring boot入门之——2.0新特性以及模块化构建相关推荐

  1. 蚂蚁金服 SOFAArk 0.6.0 新特性介绍 | 模块化开发容器...

    SOFAStack Scalable Open Financial Architecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里 ...

  2. Spring Boot 2.0 新特性(二):新增事件ApplicationStartedEvent

    今天继续来聊Spring Boot 2.0的新特性.本文将具体说说2.0版本中的事件模型,尤其是新增的事件: ApplicationStartedEvent. 原文首发:http://blog.did ...

  3. Spring Boot 2.0 新特性(一):配置绑定 2.0 全解析

    在Spring Boot 2.0中推出了Relaxed Binding 2.0,对原有的属性绑定功能做了非常多的改进以帮助我们更容易的在Spring应用中加载和读取配置信息.下面本文就来说说Sprin ...

  4. 动力节点郭鑫Spring Boot入门学习笔记,收藏起来慢慢看

    做 Java 开发的,没有人敢小觑 Spring Boot 的重要性,现在出去面试,无论多小的公司 or 项目,都要跟你扯一扯 Spring Boot,扯一扯微服务,如果啃不下来,很可能就与大厂失之交 ...

  5. SpringBoot开发之Spring Boot入门

    SpringBoot开发之SpringBoot入门 一.Spring Boot概述 1.什么是Spring Boot 2.Spring Boot的优点 二.第一个Spring Boot应用 1.创建S ...

  6. 史上最全,Spring Boot入门篇总结,收藏起来慢慢看

    Spring Boot是Spring家族下的一个全新开发框架,其设计目的主要是用来简化Spring应用的创建及开发过程,它提供了自动配置,starter依赖等特性,从而使开发人员从大量的XML配置中解 ...

  7. Spring Boot 入门

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  8. SpringBoot2.0新特性 - Quartz自动化配置集成

    https://www.jianshu.com/p/056281e057b3 在新版本的SpringBoot2.0发布后,急迫尝鲜的我将相关的项目已经更换为最新版本,在SpringBoot源码GitH ...

  9. Spring Boot 入门(五):集成 AOP 进行日志管理

    本篇文章是接着 Spring boot 入门(四):集成 Shiro 实现登陆认证和权限管理写的,按照前面几篇博客的教程,可以搭建一个简单的项目,主要包含了 Pagehelper+MyBatis 分页 ...

  10. Spring Boot 入门与实战笔记

    **一.**Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 20 ...

最新文章

  1. HTML - embed 与 object 之争
  2. 汇编:内存地址为什么从0开始?等问题
  3. HashMap(Java)
  4. STL源码剖析 序列式容器 deque双端队列
  5. webstorm 注册码,亲测可用
  6. linux定时执行一个脚本
  7. javascript基础与编写习惯
  8. Atitit webdav 的问题 -------------大文件传输问题 在某些版本的 Windows 操作系统中,WebDAV 驱动器的最大文件大小被限制为 50MB。如果你试图复制超过 5
  9. mysql插入图片_如何向MySQL中插入图片文件
  10. 《FLUENT 14流场分析自学手册》——2.2 FLUENT软件介绍
  11. java saxreader 字符串_解析XML文件(字符串)的两种方法-----SAXReader 与 DocumentHelper...
  12. 【三维点云数据处理】PCL三维点云配准 SACIA
  13. MSE 支持 Apache Shenyu 网关实现全链路灰度
  14. Unity----VR摄像机(浅谈)
  15. aptx与ldac音质区别_ldac_aptx和aptx hd功能介绍及区别介绍
  16. Linux启动时卡住
  17. mysql今天日期_MySQL获取今天的日期
  18. MAC M1大数据0-1成神篇-7 补充CAP模式
  19. USB WDM驱动开发实例 bulkusb
  20. 如何有效阅读《C++ Primer》那么厚的书

热门文章

  1. Arcgis Android API开发之离线地图
  2. Delphi读写UTF-8、Unicode格式文本文件
  3. MFC中编辑框edit的用法
  4. 用虚拟串口进行串口调试
  5. 【LeetCode】【字符串】题号:*344. 反转字符串
  6. android实现Materia Design风格APP(二):部分Materia Design风格的控件介绍一
  7. jdk lambda表达式的坑
  8. DCFEE: A Document-level Chinese Financial Event Extraction System based on Automatically Labeled Tra
  9. Flutter之Stepper源码浅析
  10. java同步和互斥程序说明(一)