SpringBoot
原来是小别扇
这个作者很懒,什么都没留下…
展开
-
SpringBoot(54) ——SpringBoot+Dubbo+zookeeper整合
目录1.环境搭建2.代码部分1.提供者2.消费者1.环境搭建创建一个空项目项目命名dubbo+zookeeper创建一个新的springBoot模块这样这个项目中的一个子model就创建好了,然后就需要清理项目结构项目结构搭建完成,可以开始写代码了2.代码部分注意:上面创建的子model是一个provider,即服务提供者的子model,如果想要使用这个服务,我们应该再创建一个consumer的子model来消费/使用这个服务;注意:我们分开两个model创建的原因就是想要模原创 2020-10-06 23:31:20 · 192 阅读 · 0 评论 -
SpringBoot(53) —— Dubbo-admin安装测试
1.window下安装dubbo-adminDubbo本身并不是一个服务软件。它其实就是一个jar包,能够帮你的java程序连接到zookeeper,并利用zookeeper消费、提供服务但是为了让用户更好的管理监控众多的dubbo服务,官方提供了一个可视化的监控程序dubbo-admin,不过这个监控即使不装也不影响使用下载dubbo-admin下载地址,直接download解压进入目录如果修改了zookeeper的端口号,就需要去修改 dubbo-admin\src原创 2020-10-06 20:27:40 · 157 阅读 · 0 评论 -
SpringBoot(52) —— 什么是RPC&Dubbo&安装zookeeper
1.什么是RPCRPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,它是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。为什原创 2020-10-06 19:40:22 · 233 阅读 · 0 评论 -
SpringBoot(51) —— 分布式系统理论
目录1.什么是分布式系统2.服务架构1.单一应用架构(All in One)2.垂直应用架构(MVC)3.分布式服务架构(RPC)4.流动计算架构(SOA)1.什么是分布式系统在《分布式系统原理与范型》一书中有如下定义:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个计算机系统”分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的原创 2020-10-06 16:26:12 · 247 阅读 · 0 评论 -
SpringBoot(50) —— 定时任务
目录1.定时任务2.Corn表达式3.定时任务实现1.步骤2.代码1.定时任务定时任务在实际开发中很常用,比如在某一个时间点就开启执行某一段代码,最常见的就是淘宝折扣,一到凌晨00:00,某一件商品的折扣就生效,到了活动结束的时候,这个商品就恢复到原价我们也可以使用定时任务实现对于这些东西的抢购,或者其他一些功能,我们需要使用到两个接口:TaskExecutor(函数式接口,可以使用lambda表达式实现)+TaskSchedulerTaskExecutor【任务执行者】TaskSchedu原创 2020-10-06 15:25:16 · 209 阅读 · 0 评论 -
SpringBoot(49) —— 邮件任务
目录1.环境搭建2.简单邮件发送3.复杂邮件发送4.将邮件发送抽象成一个可以复用的工具方法1.环境搭建导入依赖<!--邮件发送依赖--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId></dependency>可见,我们直接使用的是s原创 2020-10-06 10:38:40 · 377 阅读 · 0 评论 -
SpringBoot(48) —— 异步任务
1.异步任务/多线程为什么需要异步任务?或者说为什么我们需要多线程?为了提高用户体验就用邮件发送来举例,邮件发送需要时间,如果从邮件发送到完成之间的时间,我们都让用户等待,前端页面白屏/转圈提示加载中的话,结果就是用户体验及其不好解决办法就是使用异步任务/多线程,即用户点击发送之后,我们的主线程开启子线程,然后主线程直接向用户返回发送成功的提示信息,用户就结束了页面的使用,让子线程去做完耗时的邮件发送操作;这样做的好处就是用户直接就能得到发送的结果,提高了用户的体验(和用户体验相关的都原创 2020-10-06 09:07:54 · 289 阅读 · 1 评论 -
SpringBoot(47) —— 分组和接口注释+小结
目录1.数据接口分组配置2.实体类注解信息配置3.数据接口注解信息配置4.在线测试数据接口(swagger强大之处)5.小结1.数据接口分组配置配置API文档的分组我们可以看到swagger页面上有一个下拉列表,组信息;就是我们需要对不同的数据接口API进行分组,通过组信息/选择某一个组别,我们可以方便查看不同 类别/组中 的数据API一看这就是在配置swagger页面上的东西,所以我们还是需要使用到swagger的配置类Docket,我们可以再次回顾一下Docket类中可以配置的参数publ原创 2020-10-06 00:06:36 · 776 阅读 · 0 评论 -
SpringBoot(46) —— 配置扫描接口及开关swagger
目录1.为什么要配置扫描接口2.swagger配置扫描的数据接口1.自定义扫描的接口2.配置是否启动swagger3.需求:根据环境自动开启/关闭swagger功能1.为什么要配置扫描接口上一篇博客配置的只是一些基本信息,在看swagger页面的时候,我们可以发现它一共有4个板块,这一篇用于配置接口信息我们可以发现上图中接口信息已经有两个了一个是basic-error-controller(基本错误控制器,这个controller是我们的springBoot项目自带的,我们每一个出现了4xx原创 2020-10-05 22:03:38 · 939 阅读 · 0 评论 -
SpringBoot(45) —— 配置Swagger信息
配置Swagger信息配置swagger需要使用swagger的配置类Docket,并将这个类注入到spring容器中,所以去config中装配Docket实例但是Docket类在配置类中new的时候,需要参数,需要什么参数?看源码 public Docket(DocumentationType documentationType) { this.apiInfo = ApiInfo.DEFAULT; this.groupName = "default";原创 2020-10-05 14:55:56 · 351 阅读 · 0 评论 -
SpringBoot(44) —— Swagger介绍及集成
目录1.学习目标2.为什么有Swagger1.前后端分离3.什么是Swagger4.在项目中使用Swagger1.SpringBoot集成Swagger1.学习目标了解Swagger的作用巩固前后端分离在springBoot中集成Swagger2.为什么有Swagger1.前后端分离当前最主流的前后端分离的技术栈:Vue+SpringBoot后端时代:前端只用管理和开发静态页面,并将开发好的页面交给后端,后端通过模板引擎JSP重构视图页面(加一些EL表达式等),此时后端是整个开发的原创 2020-10-05 12:08:10 · 319 阅读 · 0 评论 -
SpringBoot(43) —— Shiro整合thymeleaf
1.动态菜单实现在上一篇博客中,我们实现了通过shiro向用户受援权限的操作,对于当用户请求某一资源时向他授予的权限其实就是从数据库中查询出来的他所拥有的权限,所以当前他请求的资源到底能不能请求到,具体还要看他拥有的权限是否包含对于当前请求资源权限,包含则请求成功;不包含则请求失败,重定向到未授权页面在spring security中,我们还实现了动态菜单的效果,即用户登陆之后不会将所有的资源都展示给用户,而是用户有对应的角色/权限,才将其权限范围内的资源展现出来,在spring security中我原创 2020-10-05 09:55:25 · 292 阅读 · 0 评论 -
SpringBoot(42) —— Shiro请求授权实现
1.Shiro请求授权实现现在我们的两个连接add和update都只是要求用户认证,认证之后就可以正常访问了,但是在真实业务中资源除了和认证挂钩之外,还与授权有关,对于有些资源,只有你拥有对应的角色你才能去访问,否则你没有权限去访问在spring security中你只需要在自定义的config类中configure(HttpSecurity http)方法中调用 http.authorizeRequests()方法就可以实现对某一资源的授权访问在shiro中,对于资源的授权管理通过使用过滤器实现,原创 2020-10-05 08:22:11 · 790 阅读 · 0 评论 -
SpringBoot(41) —— Shiro整合MyBatis
在上一篇博客中,我们为了通过账号+密码认证,直接就在realm中的AuthenticationInfo()中伪造了一个账户+密码,但是真正情况下我们应该从数据库中将数据查询出来,所以这一篇博客我们来整合Shiro+MyBatis,实现一个真正项目中的用户认证功能首先导入依赖<!--mysql驱动--><dependency> <groupId>mysql</groupId> <artifactId>mysql-connecto.原创 2020-10-04 18:12:24 · 256 阅读 · 1 评论 -
SpringBoot(40) —— Shiro实现用户认证和注销
1.Shiro实现用户认证shiro中用户的认证需要放在realm中,即请求都在config中进行过滤,但是真正的权限操作需要在realm中进行,它会将config类和realm类联动起来但是前端参数的获取需要我们在controller中进行,所以我们需要在controller中写一个获取前端参数,调用shiro进行用户认证,并返回结果视图的方法@RequestMapping("/login")public String toLogin(String username, String passwor原创 2020-10-04 16:19:31 · 1525 阅读 · 2 评论 -
SpringBoot(39) —— Shiro实现登陆拦截
1.实现登陆拦截实现登陆拦截其实就是使用shiro拦截没有经过认证的用户的请求,当用户在没有认证的情况下就请求资源时,就将其重定向到登陆认证页面,这一点和spring security一样要实现认证+授权,本质上还是在使用过滤器/拦截器,而spring security只是把这些都封装好了,我们直接调用封装之后的方法就可以使用;而Shiro对于过滤器/拦截器的封装没有spring security那么彻底,所以我们需要在刚刚创建的config中的ShiroFilterFactoryBean中配置原创 2020-10-04 15:14:51 · 714 阅读 · 0 评论 -
SpringBoot(38) —— SpringBoot整合Shiro环境搭建
目录1.环境搭建2.ShiroConfig3.创建用于测试的页面4.小结1.环境搭建创建一个SpringBoot项目,就作为父项目springboot-07-shiro的一个子模块创建即可导入thymeleaf依赖<!--thymeleaf依赖--><dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring5</artifa原创 2020-10-04 11:29:21 · 197 阅读 · 0 评论 -
SpringBoot(37) —— Shiro的Subject分析
目录1.解析Quickstart.java代码2.小结1.解析Quickstart.java代码首先来解析上一篇博客中我们粘贴的官方doc给出的快速开始的代码public class Quickstart { private static final transient Logger log = LoggerFactory.getLogger(Quickstart.class); public static void main(String[] args) {原创 2020-10-04 09:23:13 · 710 阅读 · 0 评论 -
SpringBoot(35) —— 记住我&首页定制
目录1.记住我2.定制登录页3.解决定制登录页之后,注销功能失灵的情况4.增加remember Me功能5.小结1.记住我【回顾:什么是cookie】在网站中,http请求是无状态的,也就是说,即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户;cookie的出现就是为了解决这个问题:当浏览器访问网站后,这些网站将一组数据存放在客户端,当该用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动携带给服务器,服务器通过浏览器携带的数据就能识别当前用原创 2020-10-03 20:28:27 · 545 阅读 · 0 评论 -
SpringBoot(34) —— 注销及权限控制
目录1.注销功能实现2.定制注销成功页面3.thymeleaf和spring security整合1.使用步骤2.解决登陆按钮+注销按钮显示问题3.解决动态菜单问题4.小结1.注销功能实现在spring security中同时帮我们实现了注销功能记得我们怎么开启的用户登陆页吗?http.formLogin();在spring security中注销功能也只需要我们开启即可使用http.logout();//开启注销功能惯例:看源码,通过看源码我们可以发现这个方法本身实现没原创 2020-10-03 13:14:53 · 1290 阅读 · 0 评论 -
SpringBoot(33) ——用户认证和授权
Spring Security 是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型,他可以实现强大的Web安全控制,对于安全控制,我们仅需要引入 spring-boot-starter-security 模块,进行少量的配置,即可实现强大的安全管理!记住两个类和一个注解:WebSecurityConfigurerAdapter:自定义Security策略AuthenticationManagerBuilder:自定义认证策略@EnableWebSecur..原创 2020-10-03 09:47:56 · 5158 阅读 · 2 评论 -
SpringBoot(32) —— Spring Security环境搭建
在WEB开发中,安全应该放在第一位,前面我们学过一些简单的安全策略,过滤器和拦截器安全是一个非功能性需求安全应该在WEB开发的设计的时候就应该考虑在内的,因为等到功能都开发完了再来加安全,就需要大量的修改源代码,所以在设计的时候我们就应该将它考虑在内,并在开发的过程中不断去实现和完善网站的安全其实如果我们的过滤器和拦截器用的很熟练,就可以不使用安全框架,但是一般开发过程中我们还是会使用框架,因为使用起来很方便,功能也比较完善比较知名的WEB安全框架有Shiro和SpringSecurity,这两个.原创 2020-10-02 20:39:36 · 225 阅读 · 0 评论 -
SpringBoot(31) —— 整合MyBatis框架
目录1.导入依赖2.代码演示3.小结1.导入依赖在整合mybatis和spring的时候我们导入了一个依赖:mybatis-spring整合mybatis和springBoot同理,需要导入mybatis-spring-boot-start 启动器导入最新的mybatis-spring-boot-start 的依赖<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-star原创 2020-10-02 18:58:49 · 259 阅读 · 0 评论 -
SpringBoot(30) ——整合Druid数据源
目录1.Druid简介2.怎么使用Druid3.Druid的参数配置4.Druid的后台监控(包含怎么在springBoot中注册servlet)5.对于在application中配置了Druid数据源的属性,在DruidConfig仍然要自己定义一个@Bean方法来装配Druid数据源对象到spring容器中的理解6.怎么在springBoot中注册Filter过滤器7.springBoot中注册servlet和filter的步骤8.小结1.Druid简介Java程序很大一部分要操作数据库,为了提原创 2020-10-02 16:56:16 · 335 阅读 · 0 评论 -
SpringBoot(29) ——整合JDBC使用
1.SpringData简介对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 底层都是采用 Spring Data 的方式进行统一处理Spring Boot 底层都是采用 Spring Data 的方式进行统一处理各种数据库,Spring Data 也是 Spring 中与 Spring Boot、Spring Cloud 等齐名的知名项目Sping Data 官网数据库相关的启动器,可以参考官方文档,其实这个文档记录了springBoot原创 2020-10-02 11:03:07 · 200 阅读 · 0 评论 -
SpringBoot(28) ——springBoot学习小结&后期安排
回顾springBoot什么是springBoot什么是微服务运行第一个Hello world程序探究springBoot的源码,掌握springBoot最大特点"自动装配"的原理springBoot的配置,学习了yaml,多环境切换/多配置文件 的切换通过application可以修改springBoot所有的默认配置【我们也可以借助application中的智能提示来查看springBoot设置的默认属性的值,当然也可以直接去源码中找到那两个默认配置参数的文件查看,但是注意:springB原创 2020-10-01 20:56:32 · 212 阅读 · 0 评论 -
SpringBoot(27) —— 应该如何写一个网站
目录1.后端2.前端3.怎么搭建一个完整的网站4.找工作之前的准备1.后端学习Java最多的就是后台开发,其实后台开发基本步骤比较固定,且有ssm框架简化传统的MVC 3层架构的开发,再加上springBoot自动配置spring,剩下我们需要写的基本就是一些核心的逻辑代码,以及增强springBoot的自动配置对于后端的BUG,基本都是可以是要DEBUG调试出来的,除非是什么版本问题,软件问题,这些报错的时候也基本可以在网上搜索到答案,所以后台开发基本没有太大的问题现在需要操心的是我们的前端原创 2020-10-01 20:38:03 · 482 阅读 · 0 评论 -
SpringBoot(26) —— 员工管理系统:删除员工数据&404
分析:点击list页面对应表行的删除链接,链接请求传到controller中对应的方法,方法获取传递的员工的id号,调用dao层删除员工数据;最后指定返回的视图为员工信息页即可目录1.删除代码实现2.404处理3.完善功能:注销1.删除代码实现页面删除的a标签<a class="btn btn-danger" th:href="@{/employee/delete/}+${emp.getId()}">删除</a>controller中的方法调用 .原创 2020-10-01 17:49:20 · 438 阅读 · 0 评论 -
SpringBoot(25) —— 员工管理系统:修改员工信息
分析:和新增员工信息一样,当我点击修改员工信息的时候,页面应该跳转到一个新的修改信息的页面,这个页面也是提交一个表单信息目录1.代码实现2.小结1.代码实现首先,点击修改a标签,将向controller发送对应的视图跳转请求,但是注意,这里还需要传递当前这一行员工数据的id,否则在修改页面不能加载修改之前的数据供用户参考<a class="btn btn-primary" th:href="@{/employee/update/}+${emp.getId()}">修改</a.原创 2020-10-01 17:12:01 · 2805 阅读 · 0 评论 -
SpringBoot(24) —— 员工管理系统:增加员工实现
目录1.新增按钮2.页面跳转3.部门显示4.新增员工实现5.日期格式设置1.新增按钮在这里我们需要修改一下上一篇博客中按钮的设置,新增按钮不应该加入到每一行的数据后面,它应该独立出来放在表格的上方,并且应该是一个超链接,以此跳转到新增页面,让我们在表单中填入对应的数据进行新增但是前面的文字Section title没有什么用,我们就直接把超链接放在Section title的位置上<a th:href="@{#}" class="btn btn-success" style="margin原创 2020-10-01 15:45:22 · 888 阅读 · 0 评论 -
SpringBoot(23) —— 员工管理系统:展示员工列表
首先是dashboard.html页面跳转"员工管理"页面的a标签的href属性改造创建一个controller:EmployeeController,用于控制一切有关雇员的视图跳转和参数传递package com.thhh.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controller@.原创 2020-10-01 10:27:05 · 822 阅读 · 0 评论 -
SpringBoot(22) —— 员工管理系统:登陆拦截器
注意:上图指示出了拦截器只会拦截controller但是经过测试,springBoot中会拦截static文件夹下面静态资源的访问所以在放行的时候需要放行静态资源的请求目录1.代码实现2.测试1.代码实现定义一个类实现拦截器接口实现必要的preHandle()方法即可,其他两个可以先不用实现package com.thhh.config;import org.springframework.web.servlet.HandlerInterceptor;import j..原创 2020-09-30 15:57:34 · 201 阅读 · 0 评论 -
SpringBoot(21) —— 员工管理系统:登陆功能实现
目录1.登陆功能2.问题与解决1.登陆功能由于我们还没有使用数据库,所以对于登陆功能我们可以在后台设置一个假验证,用户名随便输入,只要密码为12345就可以登陆成功首先观察前端视图模板上表单提交地址,写一个controller来控制视图跳转并修改表单提交地址package com.thhh.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;impor原创 2020-09-30 10:28:45 · 597 阅读 · 0 评论 -
SpringBoot(20) —— 员工管理系统:国际化
页面国际化确保下面这个设置界面所有地方都是utf-8创建一个国际化文件夹,取名i18n(国际化 internationalization,从第一个字母到最后一个n字母中间有18个字母,所以简称i18n)在i18n下面创建两个配置文件login.properties和login_zh_CN.properties,可以发现我们创建了第二个配置文件之后,IDEA为我们创建了一个新的文件夹:Resource Bundle ‘login’我们可以在这个文件夹中再创建一个文件夹..原创 2020-09-30 09:35:07 · 256 阅读 · 0 评论 -
SpringBoot(19) —— 员工管理系统:首页实现
目录1.设置首页路由问题2.解决静态资源css、js、img加载不进来的问题3.注意点1.设置首页路由问题首页的静态资源我们已经导入了,所以直接去配置视图解析器编写controller跳转视图/开发网页接口package com.thhh.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Con原创 2020-09-29 21:37:35 · 326 阅读 · 0 评论 -
SpringBoot(18) —— 员工管理系统:准备工作
目录1.项目准备2.数据准备+dao层1.项目准备清理项目结构我们还是就使用创建的springboot-03-web项目,前面预备知识已经学习完了,所以把一些不用的东西都删除,留下一个干净的项目结构引入静态资源按照前面学习的知识点可知:页面/视图模板放在templates文件夹下;静态资源css、js、img放在static文件夹下(虽然静态资源有4个地方可以存放,但是还是使用springBoot项目默认的static文件夹)2.数据准备+dao层数据库先不用,现在原创 2020-09-29 20:09:38 · 250 阅读 · 0 评论 -
SpringBoot(17) —— 扩展springMVC
目录1.日期格式设置2.注解@EnableWebMvc3.小结1.日期格式设置springBoot中自动配置springMVC还有一个特性为Formatter说到格式,首先最让我们头疼就就是日期格式,我们可以去看看springBoot里日期格式默认是什么样的直接去WebMvcAutoConfiguration的配置类WebMvcProperties中看看日期默认格式@Deprecated@DeprecatedConfigurationProperty(replacement = "sprin原创 2020-09-29 17:14:45 · 347 阅读 · 0 评论 -
SpringBoot(16) —— MVC配置原理
在进行项目编写前,我们还需要知道一个东西,就是SpringBoot对我们的SpringMVC还做了哪些配置,包括如何扩展,如何定制只有把这些都搞清楚了,我们在之后使用才会更加得心应手途径一:源码分析,途径二:官方文档!SpringMVC官方doc.springboot为springmvc提供了自动配置,可以很好地与大多数应用程序配合使用自动配置在Spring的默认设置之上添加了以下功能:- 包含内容协商视图解析器和Bean名称视图解析器Bean- 对服务静态资源的支持,包括对web...原创 2020-09-29 15:55:12 · 845 阅读 · 0 评论 -
SpringBoot(15) —— thymeleaf语法
使用${}取值的规则- ${x} will return a variable x stored into the Thymeleaf context or as a request attribute.- 将返回存储在Thymeleaf上下文中或作为请求属性的变量x。- ${param.x} will return a request parameter called x (which might be multivalued).- ${param.x}将返回一个名为x的请求参数(可能是多值的原创 2020-09-29 12:28:54 · 187 阅读 · 0 评论 -
SpringBoot(14) —— thymeleaf
目录1.模板引擎2.导入thymeleaf依赖3.使用thymeleaf4.小结1.模板引擎前端交给我们的页面,是html页面。如果是我们以前开发,我们需要把他们转成jsp页面,jsp好处就是当我们查出一些数据转发到JSP页面以后,我们可以用jsp轻松实现数据的显示,及交互等jsp支持非常强大的功能,包括能写Java代码,但是呢,我们现在的这种情况,SpringBoot这个项目首先是以jar的方式,不是war;第二,我们用的还是嵌入式的Tomcat,所以呢,他现在默认是不支持jsp的那原创 2020-09-29 10:44:09 · 260 阅读 · 0 评论