spring boot入门之——2.0新特性以及模块化构建
一、新特性
依赖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步:修改pom.xml文件
第2步:选中当前maven项目,右键-->module
第三步:起个“web”项目名称,其他下一步
第四步:检查父项目的pom.xml文件和web项目的pom.xml文件
待续... ...
转载于:https://blog.51cto.com/mazongfei/2135781
spring boot入门之——2.0新特性以及模块化构建相关推荐
- 蚂蚁金服 SOFAArk 0.6.0 新特性介绍 | 模块化开发容器...
SOFAStack Scalable Open Financial Architecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里 ...
- Spring Boot 2.0 新特性(二):新增事件ApplicationStartedEvent
今天继续来聊Spring Boot 2.0的新特性.本文将具体说说2.0版本中的事件模型,尤其是新增的事件: ApplicationStartedEvent. 原文首发:http://blog.did ...
- Spring Boot 2.0 新特性(一):配置绑定 2.0 全解析
在Spring Boot 2.0中推出了Relaxed Binding 2.0,对原有的属性绑定功能做了非常多的改进以帮助我们更容易的在Spring应用中加载和读取配置信息.下面本文就来说说Sprin ...
- 动力节点郭鑫Spring Boot入门学习笔记,收藏起来慢慢看
做 Java 开发的,没有人敢小觑 Spring Boot 的重要性,现在出去面试,无论多小的公司 or 项目,都要跟你扯一扯 Spring Boot,扯一扯微服务,如果啃不下来,很可能就与大厂失之交 ...
- SpringBoot开发之Spring Boot入门
SpringBoot开发之SpringBoot入门 一.Spring Boot概述 1.什么是Spring Boot 2.Spring Boot的优点 二.第一个Spring Boot应用 1.创建S ...
- 史上最全,Spring Boot入门篇总结,收藏起来慢慢看
Spring Boot是Spring家族下的一个全新开发框架,其设计目的主要是用来简化Spring应用的创建及开发过程,它提供了自动配置,starter依赖等特性,从而使开发人员从大量的XML配置中解 ...
- Spring Boot 入门
一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...
- SpringBoot2.0新特性 - Quartz自动化配置集成
https://www.jianshu.com/p/056281e057b3 在新版本的SpringBoot2.0发布后,急迫尝鲜的我将相关的项目已经更换为最新版本,在SpringBoot源码GitH ...
- Spring Boot 入门(五):集成 AOP 进行日志管理
本篇文章是接着 Spring boot 入门(四):集成 Shiro 实现登陆认证和权限管理写的,按照前面几篇博客的教程,可以搭建一个简单的项目,主要包含了 Pagehelper+MyBatis 分页 ...
- Spring Boot 入门与实战笔记
**一.**Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 20 ...
最新文章
- HTML - embed 与 object 之争
- 汇编:内存地址为什么从0开始?等问题
- HashMap(Java)
- STL源码剖析 序列式容器 deque双端队列
- webstorm 注册码,亲测可用
- linux定时执行一个脚本
- javascript基础与编写习惯
- Atitit webdav 的问题 -------------大文件传输问题 在某些版本的 Windows 操作系统中,WebDAV 驱动器的最大文件大小被限制为 50MB。如果你试图复制超过 5
- mysql插入图片_如何向MySQL中插入图片文件
- 《FLUENT 14流场分析自学手册》——2.2 FLUENT软件介绍
- java saxreader 字符串_解析XML文件(字符串)的两种方法-----SAXReader 与 DocumentHelper...
- 【三维点云数据处理】PCL三维点云配准 SACIA
- MSE 支持 Apache Shenyu 网关实现全链路灰度
- Unity----VR摄像机(浅谈)
- aptx与ldac音质区别_ldac_aptx和aptx hd功能介绍及区别介绍
- Linux启动时卡住
- mysql今天日期_MySQL获取今天的日期
- MAC M1大数据0-1成神篇-7 补充CAP模式
- USB WDM驱动开发实例 bulkusb
- 如何有效阅读《C++ Primer》那么厚的书
热门文章
- Arcgis Android API开发之离线地图
- Delphi读写UTF-8、Unicode格式文本文件
- MFC中编辑框edit的用法
- 用虚拟串口进行串口调试
- 【LeetCode】【字符串】题号:*344. 反转字符串
- android实现Materia Design风格APP(二):部分Materia Design风格的控件介绍一
- jdk lambda表达式的坑
- DCFEE: A Document-level Chinese Financial Event Extraction System based on Automatically Labeled Tra
- Flutter之Stepper源码浅析
- java同步和互斥程序说明(一)