![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
5-Java开发框架
文章平均质量分 73
SSM框架就是 Spring 、 Spring MVC 和 MyBatis 框架的缩写,是标准的MVC模式,将整个系统划分为四层: 表现层 、 controller层 、 service层 、 DAO层。 使用SSM框架的好处是在于其易复用和简化开发,掌握了每个框架的核心思想。 其中,spring
微凉归期
一起加油^0^~
展开
-
Springboot-15文件上传
1、单文件<form method="post" action="/upload" enctype="multipart/form-data"> <input type="file" name="file"><br> <input type="submit" value="提交"></form>2、多文件<form method="post" action="/upload" enctype="multipart/f原创 2021-10-18 22:34:08 · 84 阅读 · 0 评论 -
SpringCloud11-Alibaba_Sentinel(熔断与限流)
1、Sentinel介绍(1)Hystrix缺点:需要手工搭建监控平台;没有界面监控细粒度化的配置;Sentinel是一个可以独立出来的单独组件,界面化统一配置;(2)作用:从流量监控、熔断降级、负载均衡保护等多个维度保护服务的稳定性;(3)特性丰富的应用场景:秒杀、削峰、熔断等多场景使用;完备的实时监控:实时监控;广泛的开源生态:开箱即用,快速整合;完善的SPI扩展点:快速扩展定制逻辑;2、下载安装注意8080端口不要被占用(1)下载:https://githu原创 2022-03-20 20:01:25 · 381 阅读 · 1 评论 -
SpringCloud10-Alibaba_Nacos(服务注册、配置中心、负载均衡、消息总线)
Spring Cloud Alibaba官网:Git:https://github.com/alibaba/spring-cloud-alibaba/blob/2.2.x/README-zh.mdSpring Cloud: https://spring.io/projects/spring-cloud-alibaba/1、Nacos(NamingConfigurationService)1.1 基本概念更易于构建云原生应用的动态服务发现,配置管理和服务管理平台;Nacos =Eur原创 2022-03-19 12:37:52 · 1183 阅读 · 0 评论 -
SpringCloud09_链路跟踪(Sleuth)
1.1 基本概念(1)引入目的链路复杂时系统可能出现其中一个链路出现问题而影响整个系统,Spring Cloud Sleuth提供了一套完整的服务跟踪解决方案。(2)概念将一次分布式请求还原成调用链路,进行日志记录,性能监控并将一次分布式请求的调用情况集中展示。比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了 zipkin,只需要在pom文件中引入相应的依赖即可。原创 2022-03-18 19:59:36 · 594 阅读 · 0 评论 -
SpringCloud08_消息驱动(Stream)
1、消息驱动Stream1.1 基本概念(1)引入目的构建消息驱动的微服务框架,为多种消息中间件提供统一的消息编程模型,目前仅支持RabbitMQ与KafKa;(2)标准MQ生产者与消费者之间靠消息媒介传递消息内容;消息必须走特定通道;(3)实现原理应用程序通过inputs与outputs来与SpringCloudStream的Binder对象交互。Inputs对应于消费者,Ouputs对应于生产者;通过定义绑定器Binder作为中间对象负责与消息中间件的交互,实现了应用程序与消原创 2022-03-17 21:42:12 · 1963 阅读 · 0 评论 -
SpringCloud07_消息总线(Bus)
1、消息总线Bus配合spring cloud config实现配置的自动动态刷新,支持RabbitMQ和Kafka;2、消息驱动Stream目的:构建消息驱动的微服务框架,为多种消息中间件提供统一的消息编程模型,目前仅支持Rabbio与KafKa;实现:通过定义绑定器Binder作为中间件,实现了应用程序与消息中间件细节之间的解耦;Input对应于消费者,Ouput对应于生产者;Stream的消息通信方式遵循发布-订阅模式,Topic主题进行广播,在RabbitMQ为Exchange,在K原创 2022-03-16 21:33:20 · 3326 阅读 · 0 评论 -
SpringCloud06_服务配置中心(Config)
1、Config1.1介绍每个application都有一个application.yml,导致配置管理很是复杂,SpringCloud提供了ConfigServerl来解决这个问题。SpringCloud Config提供了集中的配置文件管理,不同环境不同配置动态化配置更新,配置变动无需重启即可感知,配置信息以rest形式暴露。SpringCloud Config分为服务端和客户端两部分。服务端也称分布式配置中心,是一个独立的微服务应用,用来连接配置服务器并为客户提供获取配置信息。客户端通过原创 2022-03-15 20:26:23 · 639 阅读 · 0 评论 -
SpringCloud05_路由网关(Gateway)
zuul已经停止维护,主要学习Gateway。zuul是一个基于servelt2.5使用阻塞架构,不支持长连接的设计模式,请求线程被阻塞到工作线程完成,性能较差;1、Gateway1.1 基本介绍SpringCloud GateWay基于WebFlux框架实现。目标是提供统一的路由方式且基于Filter链的方式提供网关的基本功能,如:安全、监控/指标、限流等。他使用非阻塞式API,支持WebScoket,并与Spring紧密集成。特性:动态路由:能够匹配任何请求属性;可以对路由指定断言和过原创 2022-03-14 20:16:11 · 1834 阅读 · 0 评论 -
SpringCloud04_服务降级熔断限流(Hystrix)
Hystrix断路器介绍复杂的链路结构调用,在其中一个服务出现问题时,会导致与其协调的服务运行压力越来越大,引起雪崩效应。Hystrix通过断路器的故障监控,向调用方返回一个符合预期的、可处理的备选响应,而不是长时间等待或抛出异常。避免故障蔓延。降级:服务不可用时,向调用方返回一个符合预期的,可处理的的备选响应(fallback),运行异常、超时、熔断、线程池满等会触发降级。熔断:达到最大访问量,拒绝访问,调用服务降级方法返回。限流:高并发操作时,有序进行。1、模拟超时1.1 支付模块模拟原创 2022-03-13 15:08:36 · 1396 阅读 · 0 评论 -
SpringCloud03_服务调用(Ribbon+RestTemplate、OpenFeign)
1、Ribbon+RestTemplate服务调用与负载均衡1.1 RibbonRibbon主要功能是提供客户端软件负载均衡算法和服务调用,属于进程内LB(负载均衡+restTemplate调用)。负载均衡(LB)分为集中式和进程内,就是将用户请求平均分摊到多个服务器,从而达到系统高可用。依赖:spring-cloud-starter-netflix-eureka-client集成引入了ribbon <dependency> <gro原创 2022-03-12 15:48:53 · 524 阅读 · 0 评论 -
SpringCloud02_服务注册与发现(Eureka/Actuator/Discover、ZooKeeper、Consul)
服务治理:管理每个服务之间的依赖关系,可以实现服务调用,负载均衡,容错,实现服务注册与发现。注册中心:当服务启动时,就会将服务地址等相关信息存在注册中心,管理每个服务与服务之间的依赖关系。1、Eureka包括两个组件:Eureka Server:每个微服务节点配置启动后,会在该组件中注册,该组件中就会存储服务信息;Eureka Cilent:Java客户端,用于简化Server交互,内置负载均衡器,在服务启动后默认30秒向Eureka Server发送心跳,如果多周期没有接收到,将会移除该服务。原创 2022-03-12 09:08:09 · 1843 阅读 · 0 评论 -
SpringCloud01_微服务架构入门(概述、技术栈、版本选型、环境搭建)
1、微服务架构概述将单元应用划分为一组小的服务,各服务独立部署,独立运行,服务之间相互调用,互相配合完成。SpringCloud = 分布式微服务架构的一站式解决方案,多种微服务架构落地技术的几何体。2、技术栈更新3、版本选型每个版本都有对应的SpringBoot版本,版本选型官网链接:版本选型官网链接4、环境搭建父工程构建第一步:新建工程第二步:字符编码第三步:注解激活第四步:编译版本第五步:文件过滤父工程pom.xml文件整理第一步:文件管理第二原创 2022-03-09 21:58:23 · 2646 阅读 · 1 评论 -
Springboot-29高级特性-分布式(分布式、Dubbo/Zookeeper、SpringBoot/Cloud)
服务拆分成多个模块部署,由注册中心统一管理分配。A服务需要调用B服务,需要先调用注册中心,再由注册中心找到B服务;组合一:Dubbo+ZookeeperZookeeper注册中心:应用程序协调服务;Dubbo分布式服务框架:使各层解耦;使用:需要使用docker安装镜像(1)服务提供者需要进行的准备第一步:创建一个服务提供者引入依赖服务提供者为服务接口类dubbo依赖<dependency> <groupId>org.apache.du原创 2022-02-27 18:28:23 · 877 阅读 · 0 评论 -
Springboot-28高级特性-安全(spring Security)
1、概念安全框架:shiro、security主要功能:认证:建立用户授权:用户可以访问的资源权限2、使用(1)依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </de原创 2022-02-27 14:38:23 · 3791 阅读 · 0 评论 -
Springboot-27高级特性-任务(异步、定时、邮件)
1、异步任务@EnableAsyc:主程序开启异步注解;@Asyc:方法添加注解,告诉spring是一个异步方法,就会开一个线程池自动调用;2、定时任务@EnableScheduling:开启定时任务;@Scuheduled:方法标注定时表达式;表达式6位,分别代表:秒分时日月周//每天每秒启动@Scuheduled(cron="* * * * * MON-SAT")//每周一到周五整秒启动,即每周一到周五每分钟启动一次@Scuheduled(cron="0 * * * * MO原创 2022-02-27 11:59:25 · 314 阅读 · 0 评论 -
Springboot-26高级特性-检索(ElasticSearch)
概念:分布式搜索服务,快速存储、搜索和分析海量数据,通过restful API;1、使用docker中国,安装镜像。学习路径:学习官网路径原创 2022-02-26 23:05:49 · 1362 阅读 · 0 评论 -
Springboot-25高级特性-消息(简介、RabbitMQ)
1、简介使用场景(1)异步处理注册——》发短信——》发邮件——》收到响应注册——》同时发短信邮件——》收到响应注册——》写入消息队列——》收到响应——》异步读取发送短信邮件(异步处理)(2)应用解耦订单——》库存订单——》消息队列《——库存(3)流量削峰秒杀数量为1w,当消息队列请求达到1w之后,用户请求直接返回秒杀失败,之后进行业务处理。用户请求——》消息队列——》业务处理概念(1)消息代理:message broker,中间服务器;(2)目的地:destinati原创 2022-02-26 22:50:03 · 811 阅读 · 0 评论 -
Springboot-24高级特性-缓存(JSR107、缓存抽象Cacheable、整合redis)
用途:读取缓存,减少服务器压力,提高性能;临时数据,如有效期验证码;1、JSR107(1)java caching定义5个核心接口cachingprovider:创建、配置、获取、管理和控制cachemanager,一个应用可以运行时访问多个cachingprovider;chchemanager:创建、配置、管理和控制多个唯一命名的cache,这些cache存在于cachemanager的上下文中。一个cachemanager只能被一个cachingprovider用于;cache:一原创 2022-02-26 16:48:08 · 446 阅读 · 0 评论 -
Springboot-23高级特性(profile、加载优先级、自定义starter)
1、profile(1)环境切换#1、环境配置spring: #当前环境 profiles: active: dev默认配置文件与环境配置同时存在某个配置项,环境配置优先加载;打包之后可以重新选择环境激活,使用如下指令:java -jar xxx.jar --spring.profiles.active=prod --person.name=haha–spring.profiles.active=prod:重新制定配置文件;–person.name=haha:重新原创 2022-02-26 00:01:22 · 576 阅读 · 0 评论 -
Springboot-22指标监控(Actuator)
1、Actuator简介每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。springboot1.0与springboot2.0版本存在很大区别,2.0版本支持内容更多。2、Actuator使用(1)引入依赖<dependency> <groupId>org.springframework.boot</groupId&原创 2022-02-25 23:04:36 · 306 阅读 · 0 评论 -
Springboot-21单元测试(Junit5、assertions、assumptions、嵌套测试、参数化测试)
1、JUnit5 的变化Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库作为最新版本的JUnit框架由,三个不同子项目的几个不同模块组成。JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit VintageJUnit Platform: Junit Platform是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。JUnit Jupiter: JUnit Jupiter提供了原创 2022-02-23 22:31:52 · 429 阅读 · 0 评论 -
Springboot-20数据访问-NoSQL(redis、jedis)
1、概念:Redis 是一个开源(BSD 许可)的内存数据结构存储,用作数据库、缓存和消息中间件。Redis 提供数据结构,例如字符串、散列、列表、集合、具有范围查询的排序集合、位图、超日志、地理空间索引和流。2、redis自动配置依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo原创 2022-02-23 21:16:43 · 826 阅读 · 0 评论 -
Springboot-19数据访问-SQL(Druid、Mybatis、MybatisPlus)
数据访问-SQL(Druid、Mybatis、MybatisPlus)原创 2022-02-22 22:46:10 · 625 阅读 · 0 评论 -
Springboot-18嵌入式Servelt容器与定制化原理
嵌入式Servelt容器1、概念内置服务器,直接启动服务默认支持的webServerTomcat, Jetty, or UndertowServletWebServerApplicationContext 容器启动寻找ServletWebServerFactory并引导创建服务器切换服务器<dependency> <groupId>org.springframework.boot</groupId> <artifact原创 2022-02-21 22:15:50 · 98 阅读 · 0 评论 -
Springboot-17原生组件注入(servlet、fileter、listener)
1、方式一:使用Servlet API//指定扫描目录@ServletComponentScan(basePackages = "com.atguigu.admin") :指定原生Servlet组件都放在那里//servelt@WebServlet(urlPatterns = "/my"):效果:直接响应,没有经过Spring的拦截器?//过滤器@WebFilter(urlPatterns={"/css/*","/images/*"})//监听器@WebListenerservlet原创 2021-10-21 22:58:51 · 156 阅读 · 0 评论 -
Springboot-16错误处理
1、默认处理当访问页面时是返回404,500等错误信息默认情况下,Spring Boot提供/error处理所有错误的映射。如果是浏览器请求URL错误,返回错误页面;如果是postman等非浏览器客户端请求URL错误,返回 json 数据。浏览器客户端机器客户端2、自定义要对其进行自定义,添加View解析为error;error/404.html error/5xx.html;有精确的错误状态码页面就匹配精确,没有就找 4xx.html;如果都没有就触发白页。注意:html原创 2021-10-20 22:19:07 · 191 阅读 · 0 评论 -
Springboot-14拦截器(登录检查、静态放行)
需求:对于每个页面访问时都需要登录验证,如果不登录则无法访问。实现拦截器需要实现HandlerInterceptor类,分为方法执行前,执行时,执行后三个处理阶段。注册拦截器时需要实现WebMvcConfigurer类。逻辑:登录前检查session对象中是否存在登录用户,如果没有跳转到登录页,并往session中放入提示信息;实现:1、写一个拦截器,明确拦截逻辑;package com.springbootweb.Interceptor;import lombok.exte原创 2021-10-18 21:57:52 · 603 阅读 · 1 评论 -
Springboot-13Web实验
注意:使用模板引擎需导入动态资源模板引擎驱动1、下载资源百度搜索bootstrap模板,即可找到免费资源下载2、导入资源资源目录导入目录3、处理请求3.1 访问请求登录页//访问http://localhost:8005 或者http://localhost:8005/login进入登录页 @GetMapping(value = {"/","login"}) public String toLogin(){ return "login";原创 2021-10-18 20:57:54 · 111 阅读 · 0 评论 -
Springboot-12视图解析与模板引擎(thymeleaf)
1、视图解析概念:springboot处理完请求想要跳转页面的位置;SpringBoot默认不支持 JSP,需要引入第三方模板引擎技术实现页面渲染。实现:转发重定向自定义视图2、模板引擎(thymeleaf)thymeleaf 不适用高并发2.1 基本语法1、表达式表达式名字——》语法——》用途变量取值——》${…} ——》获取请求域、session域、对象等值选择变量——》*{…}——》获取上下文对象值消息——》#{…}——》获取国际化等值链接——》@{…} ——》生原创 2021-10-16 12:44:54 · 327 阅读 · 0 评论 -
Springboot-11数据响应(响应JSON)、内容协商
1、json1.1 引入Springboot web包,帮我们自动导入json处理<!-- 启动器-web-Mvc环境依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>原创 2021-10-16 11:58:13 · 359 阅读 · 0 评论 -
Springboot-10请求处理(Servlet、复杂参数、自定义)
1、Servlet API:WebRequest、ServletRequest、MultipartRequest、 HttpSession、javax.servlet.http.PushBuilder、Principal、InputStream、Reader、HttpMethod、Locale、TimeZone、ZoneId2、复杂参数1、Map、Model(map、model里面的数据会被放在request的请求域 ),即等价于给HttpServletRequest 放数据(request.setA原创 2021-10-13 22:56:42 · 251 阅读 · 0 评论 -
Springboot-09请求处理(rest风格、参数注解)
1、rest使用与原理index.html<form action="/user/get" method="get"> <input value="REST-GET" type="submit"></form><form action="/user/post" method="post"> <input value="REST-POST" type="submit"></form><form act原创 2021-09-29 23:01:19 · 420 阅读 · 0 评论 -
Springboot-08Web场景(静态资源、webjars、欢迎页)
1、静态资源官网静态资源内容学习地址1.1 默认访问路径类路径下以下路径如果存在静态资源(图片,文件,视频等),可以浏览器直接访问得到:当前项目根路径/ + 静态资源名/static (or /public or /resources or /META-INF/resources)Controller优先处理如果存在与静态资源相同的Controller访问路径,则优先处理。即优先处理Controller路径,如果没有再从静态路径找。1.2 默认配置修改1.2.1 访问路径加前缀s原创 2021-09-28 22:23:26 · 151 阅读 · 0 评论 -
SpringBoot-07配置文件
1、properties同传统配置文件2、yamlspringboot推荐使用,适合以数据为中心的配置文件2.1基本语法key: value;kv之间有空格大小写敏感使用缩进表示层级关系缩进不允许使用tab,只允许空格缩进的空格数不重要,只要相同层级的元素左对齐即可'#'表示注释字符串无需加引号,如果要加,’'与""表示字符串内容 会被 转义/不转义通过@ConfigurationProperties(prefix = "student")使用双引号 \n 换行,单引号转义不换行原创 2021-09-27 22:13:19 · 137 阅读 · 0 评论 -
SpringBoot-06简化开发(lombok、dev-tools、Spring Initailizr)
1、lombok1.1 引入依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional></dependency>1.2 安装插件1.3 使用@Data :setter,getter;@AllArgsConstru原创 2021-09-27 21:58:26 · 90 阅读 · 0 评论 -
SpringBoot-05最佳实战
1、引入依赖 https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter2、查看哪些开启,哪些未开启application.yml配置文件中加入 debug:true,即可在控制台查看哪些配置生效,哪些未生效。Negative(不生效)\Positive(生效)3、修改配置项 https://docs.spring.io/spring原创 2021-09-27 21:39:41 · 182 阅读 · 0 评论 -
SpringBoot-04自动装配原理3(底层)
1、主程序注解1.1 @SpringBootApplication等效于以下3个注解(1)@SpringBootConfiguration/***里面是一个@Configuration*说明是一个配置类**/(2)@ComponentScan/***包扫描**/(3)@EnableAutoConfiguration@AutoConfigurationPackage@Import({Registrar.class}) //Registrar批量注册组件,默认注册主原创 2021-09-26 23:50:03 · 62 阅读 · 0 评论 -
SpringBoot-03自动装配原理2(注解)
1、组件添加1.1 @Configuration/**proxyBeanMethods特性 * 1、配置类本身也是一个组件 * 2、组件注册默认是单例的 * 3、proxyBeanMethods:代理bean的方法,为true时每次都是从容器中取,保持单实例,每次拿到的对象是相等的 * Full:proxyBeanMethods = true * Lits:proxyBeanMethods = false */ //告诉这是一个配置类 @Configuration(proxy原创 2021-09-25 22:16:17 · 183 阅读 · 0 评论 -
SpringBoot-02自动装配原理1(依赖)
1、依赖管理帮我们进行了版本管理,几乎声明了所有开发中常用的依赖的版本号,自动版本仲裁机制。pom.xml依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.5-SNAPSHOT</ver原创 2021-09-25 20:08:43 · 177 阅读 · 0 评论 -
SpringBoot-01背景与入门
1、微服务https://martinfowler.com/microservices/微服务是一种架构风格一个应用拆分为一组小型服务每个服务运行在自己的进程内,可独立部署和升级服务之间使用轻量级HTTP交互服务围绕业务功能拆分可以由全自动部署机制独立部署去中心化,服务自治。服务可以使用不同的语言、不同的存储技术2、分布式分布式的困难远程调用服务发现负载均衡服务容错配置管理服务监控链路追踪日志管理任务调度3、分布式上云的困难服务自愈弹性伸缩服务隔离原创 2021-09-25 18:15:04 · 85 阅读 · 0 评论