博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot学习日记(一)开始
阅读量:7175 次
发布时间:2019-06-29

本文共 3289 字,大约阅读时间需要 10 分钟。

跟着教程,在spring initializr上面建了一demo。

Spring initializr 是Spring 官方提供的一个很好的工具,用来初始化一个Spring boot 的项目。

建完以后发现结构是这样子的,跟东哥的sunrise是有相似的结构,他应该也是通过这个初始化的项目,我个人理解是通过这个来选择你想要的组件他会自动帮你下载好相应的jar包。

写了一个dao层:user类

idea中生成set get方法的快捷键是alt+insert。

新建一个Repository包(仓储):具体这个层有什么用还不是很清楚,待补充。

@Repository:用于标注数据访问组件,即DAO组件。

@link:javadoc文档,可以把你的写的注释生成api文件,这个link就可以连接到你想要链接的文件里面去,譬如这里是链接到User这个model里面。

controller层:

package com.kim.firstappdemo.controller;import com.kim.firstappdemo.domain.User;import com.kim.firstappdemo.repository.UserRepository;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class UserController {    private final UserRepository userRepository;    @Autowired    public UserController(UserRepository userRepository){        this.userRepository = userRepository;    }    @PostMapping("/person/save")    public User save(@RequestParam String name){        User user = new User();        user.setName(name);        if(userRepository.save(user)){            System.out.printf("用户对象: % 保存成功!\n",user);        }        return  user;    }}复制代码

然后Debug

这里打了断点:

因为写的是post请求,之前我想起来我写ssm,用的都是ajax来发送post请求,这里不用麻烦,下载了一个软件:postman。

把url写进去,然后设置是post,然后设置params,send就能发送请求。

debug没有问题。

新建config包 新建RouteFunctionConfiguration:

从名字上来看,这是路由方法配置,应该跟我之前写过得路由配置差不多。

package com.kim.firstappdemo.config;import com.kim.firstappdemo.domain.User;import com.kim.firstappdemo.repository.UserRepository;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.reactive.function.server.RequestPredicates;import org.springframework.web.reactive.function.server.RouterFunction;import org.springframework.web.reactive.function.server.RouterFunctions;import org.springframework.web.reactive.function.server.ServerResponse;import reactor.core.publisher.Flux;import java.util.Collection;/** * 路由器函数 设置 */@Configurationpublic class RouteFunctionConfiguration {    /**     * Servlet     *  请求接口:ServletRequest 或者 HttpServletRequest     *  响应接口:ServletRequest 或者 HttpServletRequest     * Spring 5.0 重新定义了服务请求和响应接口     * 即可支持 Servlet 规范,也可以支持自定义 比如 Netty (Web Server)     * 以本例:     * 定义 GET 请求,并且返回所有用户对象  URI :/person/find/all     *     * Flux 是 0 - N 个对象的集合     * Mono 是 0 - 1 个对象的集合     * Reactive 中的 Flux 或者 Mono 他是异步处理(非阻塞)     * 集合对象基本上是同步处理(阻塞)     * Flux 或则 Mono 都是 Publisher(发布者)     */    @Bean    @Autowired    public RouterFunction
personFindAll(UserRepository userRepository){ return RouterFunctions.route(RequestPredicates.GET("/person/find/all"), serverRequest -> { // 返回所有用户对象 Collection
users = userRepository.findAll(); Flux
userFlux = Flux.fromIterable(users); return ServerResponse.ok().body(userFlux,User.class); }); }}复制代码

调用仓储repository里面的findAll方法放在一个collection集合里面,通过迭代方法放进Flux集合里面,然后再返回。

.ok()就是有数据是返回的一个状态

然后开debug,用postman发请求:

返回的结果没有问题。

用Reactive实现的好处:是异步处理,增大吞吐量。

转载地址:http://wqpzm.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
思达报表工具Style Report基础教程—在数据块中设置Where、Having条件
查看>>
计算机领域最新技术报告:云数据库
查看>>
ora-01658 unable to create initial extent for segment in tablespace
查看>>
Difference Between VMFS 3 and VMFS 5
查看>>
time命令小结
查看>>
kali 1.0.9a 启动Metasploit
查看>>
python 数字
查看>>
Android入门及环境搭建
查看>>
我的友情链接
查看>>
flume source channel sink
查看>>
Axis2+spring的webservice小例子
查看>>
Android UI系列-----ScrollView和HorizontalScrollView
查看>>
Mac OS X 背后的故事
查看>>
AgileEAS.NET敏捷开发平台及案例下载(持续更新)-索引
查看>>
修改hosts文件无效?附解决办法
查看>>
OpenCV编程->Haar训练(1)
查看>>
Oracle_071_lesson_p10
查看>>
Oracle_052_lesson_p2
查看>>
脱壳免杀技术大纲
查看>>