![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring
文章平均质量分 56
Spring、SpringCloud知识
和尚用0飘柔0
这个作者很懒,什么都没留下…
展开
-
【Spring】注解
**需求:定义一个注解,用于比较注解中某个参数值是否和修饰的方法的参数值相等。**步骤:1. 定义一个注解名为ValidQuery@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Inheritedpublic @interface ValidQuery { String name();}说明:a)@Target(ElementType.METHOD):注解能够使用的地方,此处为方法上。一般使用的地方原创 2022-02-08 18:36:52 · 584 阅读 · 0 评论 -
【SpringCloud】nacos服务配置之命名空间namespace
本文主要讲解nacos服务配置的命名空间。我们可以通过命名空间,分组,激活环境配置来获取nacos中对应名称空间、分组、激活环境对应文件信息。例如:我们要创建多个名称空间,新创建的名称空间下没有配置信息,我们需要创建不同分组的配置信息,以便于获取这些信息。具体步骤如下:在http://localhost:8848/nacos中新建命名空间:创建配置信息说明:在dev命名空间中创建不同组别的配置信息。查看这些不同组别的配置信息导包(在模块3377中操作)<depende原创 2021-08-01 16:19:59 · 19343 阅读 · 0 评论 -
【SpringCloud】nacos-服务配置
nacos服务配置与bus一样,bus可以从github或者gitee中获取文件信息。而nacos则可以从nacos配置管理中创建配置,并获取其配置信息。nacos服务配置具体步骤如下:在nacos界面配置团里中创建配置登录http://localhost:8848/nacos,点击新建按钮,进入创建界面。注意:Data Id是有命名规范的,其规范参照nacos官网,同时,配置内容中config:后面必须打上一个空格,不然配置模块无法启动!!后缀必须是yaml,切记不能是yml,不然配置模块也不能正常原创 2021-08-01 15:52:19 · 833 阅读 · 2 评论 -
【SpringCloud】nacos-服务注册与发现
本文主要对Provider端的两个模块9001和9002注册进nacos。与Eureka和Consul一样,nacos有服务注册功能,其模型图如下图所示:将9001和9002注册进nacos具体步骤如下:说明:所有的导包和配置主程序类,业务类,官网都有示例,粘贴下来即可。安装并打开nacos打开nacos:在下载的安装包中,打开startup.cmd,会弹出命令框,在浏览器中输入http://localhost:8848/nacos,即可进入nacos可视化界面,在这个界面可以查看注册进来的原创 2021-07-31 21:41:09 · 199 阅读 · 1 评论 -
【SpringCloud】zipkin链路追踪
综述:zipkin是一种链路追踪机制。例如我们的Consumer端模块调用Provider端模块,模块与模块间的调用我们可以用zipkin来追踪,可以图形化方式显示那个模块调用了哪个模块。配置步骤说明:这里使用Consumer端80来调用Provider端8001为例。(一)配置8001导包<dependency> <groupId>org.springframework.cloud</groupId> <原创 2021-07-31 17:55:25 · 132 阅读 · 0 评论 -
【SpringCloud】Stream中消息持久化
Consumer中有模块8802和8803,并且对他们进行了分组,现在,我们不对8802进行分组(即在配置文件中将group属性去掉),8803依然保持分组(配置文件中group:atguiguA),重新启动8801(向rabbitmq中发送消息),重启8802和8803,我们将看到8802不会接收到8801发送给rabbitmq的消息,而8803还会接收到rabbitmq中的消息,这就是消息的持久化。8801:8803:重启后依然能就收消息,8802则不能!...原创 2021-07-31 16:38:37 · 365 阅读 · 0 评论 -
【SpringCloud】Stream分组
上两篇文章中,介绍了Provider端利用消息管道向rabbitmq中发送消息,Consumer端监听rabbitmq中消息,但是如果Consumer端有两个模块,Stream默认这两个模块属于不同分组,那么不同分组可以重复监听rabbitmq中的消息,效果如图:8801(Provider端消息发送)8802(Consumer端消息接收)8803(Consumer端消息接收)这里可以看到,8801向rabbitmq中发送了两个消息,由于我们没有在8802和8803配置文件中添加分组,系统默认为原创 2021-07-31 16:25:37 · 340 阅读 · 0 评论 -
【SpringCloud】利用stream技术Consumer端接收Provider端向rabbitmq发送的消息
运行模型如图所示:具体操作步骤说明:上篇文章Provider端的8801端口已经成功向rabbitmq发送了消息,这里我们只需要从rabbitmq中获取已发送的消息即可。创建8802模块2. 导包<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-rab原创 2021-07-31 14:54:16 · 162 阅读 · 0 评论 -
【SpringCloud】Provider端利用Stream向rabbitMQ发送消息
交互模型如图所示:Provider端中模块8801通过消息管道向rabbitmq发送消息步骤创建8801模块导包<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-stream-rabbit</artifactId></dependency>原创 2021-07-31 14:00:06 · 90 阅读 · 0 评论 -
【SpringCloud】config客户端配置
config_client通过配置进config_server来操作gitee上的文件config_client中模块3355配置如下:创建模块导包<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId></de原创 2021-07-29 20:25:26 · 221 阅读 · 0 评论 -
【SpringCloud】Config-Server配置
配置目的:SpringCloud config通过Gitee获取配置信息配置步骤:hosts文件配置127.0.0.1 config-3344.com1. 在gitee上创建新仓库和3个文件2. 创建3344模块5. 导包<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-conf原创 2021-07-29 15:24:53 · 236 阅读 · 0 评论 -
【SpringCloud】gateway网关配置
本文主要论述了gateway网关配置,将Provider中的模块接口配置进对应网关中,让Provider中的接口不被暴露出来,用户通过访问网关来访问微服务。网关与其他端的关系如图所示:配置步骤如下说明:本配置为将Provider中8001模块的某个接口配置进9527网关模块中!(一)通过application.yml文件将8001中接口配置进9527网关。1. 创建9527模块2. 导包(pom.xml)主要导入两个包:(1).9527模块注册进Eureka。<dependenc原创 2021-07-28 20:52:40 · 715 阅读 · 0 评论 -
【SpringCloud】Consumer中的模块调用Provider中的模块
Consumer和Provider以及服务注册之间的关系如图:Consumer通过RestTemplete和@FeignClient方式来调用Peovider中的模块。实际上,调用的是Provider中模块中的Controller中的各种接口!!利用RestTemplete来调用服务(Consumer模块操作)在80模块中创建配置类(ApplicationContextConfig)@Configurationpublic class ApplicationContextConfig {原创 2021-07-26 21:10:03 · 567 阅读 · 0 评论 -
【SpringCloud】服务注册——Consoul
将Consumer和Provider中的模块注册进ConsulConsul的功能和Eureka相同,都是进行服务注册的。(一) Provider中的模块注册进Consul安装并启动Consul在consul.exe文件中输入cmd,在弹出框中输入consul agent -dev来启动consul,成功后可输入http://localhost:8500/来访问Consul页面,在这个页面可以看到有多少模块注册进来了。创建Provider中的模块(cloud-providerconsul-pa原创 2021-07-26 19:51:37 · 1848 阅读 · 0 评论 -
【SpringCloud】服务注册——Eureka集群环境构建+consumer端注册+provider端注册
三者关系如图所示:说明:7001+7002为Eurake服务集群;80为服务调用者summer端;8001+8002为为服务提供者provider端。Eureka服务集群在注册的时候应该相互注册,相互守望。(一)Eureka服务集群环境构建和注册找到C:\Windows\System32\drivers\etc路径下的hosts文件,修改映射配置添加进hosts文件127.0.0.1 eureka7001.com127.0.0.1 eureka7002.com创建模块cloud-eu原创 2021-07-26 15:47:43 · 327 阅读 · 0 评论 -
【SpringBoot】MybatisPlus使用
MybatisPlus使用1. 导入依赖:官网地址——Mybatis-Plus官方网站2. Dao层接口继承BaseMapper类(泛型)@Mapperpublic interface userDaoMybatisPlus extends BaseMapper<userPojo> {}*注意:BaseMapper中的泛型对应的时Pojo,且这里面的名字也应该是表名,若数据库中的表名不是这个名字,那么需要在对应Pojo中使用@TableName(“表名”)。Pojo如下:@Co原创 2021-07-04 15:07:18 · 193 阅读 · 0 评论 -
【SpringBoot】application.properties或application.yml配置文件可配置内容
【SpringBoot】application.properties或application.yml配置文件可配置内容SpringBoot推荐使用yml配置文件来进行配置。注意:配置文件前缀必须是application开头,这是规定!!我们如何知道配置文件时可以配置哪些项呢?*首先找到autoconfigure包中META-INF/spring.factories。*该文件下包含大量配置类,这些类会根据编写的代码自动导入容器中。*点击进入到一个类中,可搜索ConfigurationPropert原创 2021-06-28 21:52:03 · 162 阅读 · 0 评论 -
【SSM配置文件】
(一)applicationContext.xml(Spring整合Dao层和Service层)<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.spring原创 2021-04-10 09:58:39 · 61 阅读 · 0 评论 -
【Spring-SpringMVC-MyBatis三大框架整合】SSM整合
SSM三大框架整合整体文件展示:(一) 导包在pom.xml中导包:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/PO原创 2021-03-18 20:37:15 · 138 阅读 · 1 评论 -
【MyBatis】逆向工程——自动生成bean、接口、配口实现xml和数据库配置xml文件
手动连接操作数据库需要创建与数据库字段对应的bean组件,然后生成对数据库进行增删改查的接口,之后在类路径下创建接口实现xml文件和数据库配置的xml文件。整个过程过于繁琐,可以使用逆向工程自动生成这些文件。刚开始的文件包:具体步骤:1. 在工程中创建mbg.xml文件,用于写入逆行工程代码。其代码可参照2. 修改对应标签中的代码,使其自动生成bean,接口,配置等文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE gener原创 2021-03-16 17:15:59 · 409 阅读 · 0 评论 -
【MyBatis】自定义封装规则,使bean中属性和数据库列名相对应,解决某些列值无法查出的问题
建立了数据库表后,需要创建一个bean组件,在该组件中的属性要和数据表中的列相对应。Mybatis会自动根据属性名与列相对应,但是如果bean中的属性名和数据表列明无法匹配时,可以自定义映射规则,将属性名和列明一一对应,解决查询操作中某些字段值无法被查出的问题。说明:我这里是和数据库表中的列名是对应的,mybatis能自动将属性和列明对应起来,如果把属性名改成其他名字,则无法与列名对应,我们 就需要自定义映射规则,将两者对应起来。1. 在接口配置文件中建立自定义映射规则<!-- 自定义映射原创 2021-03-09 22:15:07 · 534 阅读 · 1 评论 -
【MyBatis】对MySQL数据库进行增删改查
利用MyBatis对MySQL进行增删改查工作(一)创建数据库表(二)创建一个bean组件,内部属性包含数据库表中的全部字段,用于存放数据库中的数据。package com.atguigu.bean;public class Cat { private Integer id; private String cName; private Integer cAge; private Integer cGender; public Cat() { super(); }原创 2021-03-09 21:42:38 · 194 阅读 · 0 评论 -
【MyBatis】hello world
将数据库中的数据查询出来,并展示在控制台。具体步骤如下:(一)在数据库中建立表t_employee(二)创建一个组件,用于存放数据库中的数据package com.atguigu.bean;/* * 用于封装表的数据 * */public class Employee { private Integer id; private String empName; private String email; private Integer gender; publi原创 2021-03-08 20:38:36 · 106 阅读 · 1 评论 -
【SpringMVC】拦截器(控制器拦截前端请求各阶段可执行操作)
拦截器:拦截前端页面发送的请求。在拦截请求之前,之后,请求执行完之后可进行操作。并且拦截器是一个接口,需要用一个类来实现该接口。创建拦截器步骤:创建一个组件(类),用于实现拦截器接口:public class MyFirstInterceptor implements HandlerInterceptor{ @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Ob原创 2021-03-07 15:33:47 · 1059 阅读 · 0 评论 -
【SpringMVC】CRUD(增删改查)——查
查询员工列表(无数据库)**说明:**该操作不涉及数据库,是将数据存储在前端页面request域中,前端页面直接获取的。结构目录:步骤:前端页面(index.js)直接发送/emps请求。<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!-- 访问项目就要展示员工列表页面 --><jsp:forward page="/emps原创 2021-03-04 15:21:52 · 68 阅读 · 0 评论 -
【SpringMVC】forward转发和redirect重定向讲解
(一)Forwardforward:——表示直接转发,而不会进行拼串。用法1:在控制器组件(用于拦截前端请求)中添加以下方法:@RequestMapping(value="/handle01") public String handle01(){ System.out.println("handle01.."); return "forward:/hello.jsp"; }说明:控制器拦截前端handle01请求,拦截后执行注解下方的handle01()方法。forward:/hel原创 2021-03-03 15:48:29 · 285 阅读 · 1 评论 -
【SpringMVC】给前端页面的request、session域中存放数据
给前端页面request域中存放数据:**有Model、Map、ModelMap三种方法(一)Model方法给前端页面request域中存放数据在控制器组件(用于拦截前端页面发送的请求)中添加如下代码:@RequestMapping(value="/handle02") public String handle02(Model model){ model.addAttribute("msg", "你好坏!"); System.out.println("model的类型:"+mod原创 2021-03-01 16:28:14 · 2376 阅读 · 2 评论 -
【SpringMVC】前端页面只能发送“get”、“post”请求,无法发送“put”、“delete”请求的解决方法
前端页面默认只能发送“get”、“post”请求,无法发送“put”、“delete”,要解决这个问题有以下两个步骤:(一)在web.xml配置文件中配置SpringMVC提供的Filter:他可以把普通的请求转化为规定形式的请求。配置如下:<!-- 配置filter,以便于前端发送“delete”和“put”请求方法 --> <filter> <filter-name>HiddenHttpMethodFilter</filter-name>原创 2021-02-28 15:10:22 · 1584 阅读 · 1 评论 -
【SpringMVC】helloworld
SpringMVC的第一个程序——helloworld步骤:(一)导包(二)配置(三)测试准备工作:切换至“Java EE”模式(如果没有这个模式,可在搜索框中搜索)。(一)导包(二)配置功能说明:index界面中有一个超链接,点击超链接后会发送“hello”请求,点击超链接后会跳转至“success” 界面。新建index.jsp页面(在WebContent文件夹下新建“jsp file”):<%@ page language="java" contentTyp原创 2021-02-25 23:08:36 · 122 阅读 · 0 评论 -
【Spring-AOP】@Around环绕通知详解
简介@Around环绕通知:它集成了@Before、@AfterReturing、@AfterThrowing、@After四大通知。需要注意的是,他和其他四大通知注解最大的不同是需要手动进行接口内方法的反射后才能执行接口中的方法,换言之,@Around其实就是一个动态代理。具体写法package com.atguigu.utils;import java.lang.reflect.Method;import java.util.Arrays;import org.aspectj.lang.原创 2021-02-24 15:07:33 · 15000 阅读 · 1 评论 -
【Spring-AOP】AOP简单配置(在调用接口方法过程中(调用前、方法正常返回值后、方法异常、整个方法调用结束后),需要动态代理)
在一个项目中有如下类和接口:(1)MyMathCalculator.java:是Calculator接口的实现类package com.atguigu.impl;import org.springframework.stereotype.Service;import com.atguigu.inter.Calculator;@Servicepublic class MyMathCalculator implements Calculator{ @Override public i原创 2021-02-22 22:42:18 · 502 阅读 · 0 评论 -
【Spring】将组件加入到容器中的方法
将组件(类)加入到ioc容器中的方法1. 通过bean方法,可将组件加入到IOC容器中:<bean id="XXX" class="XXX"></bean>2. 通过注解的方式将组件加入到IOC容器中:(A)通过给bean上添加某些注解,可以快速将组件加入到ioc容器中。(B)在某个组件(类)上添加上任何一个注解都能快速将整个组件加入到IOC容器中。(C)spring为我们提供了一下注解:@Controller:控制器;推荐给控制层(Servlet包下的这些)的组件加原创 2021-01-24 16:41:05 · 673 阅读 · 0 评论 -
【Spring】使用spring连接数据库
使用Spring连接MySql数据库导包配置测试(一)导包注意:导入的mysql-connector-java-5.1.37-bin.jar这个包要和本机中MySql版本匹配!!(二)配置注意:这步可以理解为需要在ioc容器中导入ComboPooledDataSource这个组件,这个组件中有一些属性需要配置。配置如下:<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> &l原创 2021-01-22 22:45:12 · 250 阅读 · 0 评论 -
【Spring】对组件(类)中的属性进行赋值,即创建bean实例的方法
有一个组件(类)Person,要对其进行赋值,即创建bean实例的方法:首先Person组件的定义如下:package com.atguigu.bean;public class Person { private String lastName; private Integer age; private String gender; private String email; public Person(String lastName, Integer age, String原创 2021-01-21 00:08:02 · 299 阅读 · 1 评论 -
【Spring】获取bean实例的方式
一个Person组件(类)中创建了两个bean实例person01、person02,那么该如何获取这两个实例呢?首先明确Person组件已经加入了容器,其属性有:lastName、age、gender、emailpackage com.atguigu.bean;public class Person { private String lastName; private Integer age; private String gender; private String email;原创 2021-01-20 22:43:00 · 504 阅读 · 0 评论 -
【Spring】Spring的第一个程序HelloWord
总述:导包配置测试(一)导包:相当于创建一个容器所需要的包注意:一定要配置路径(二)配置创建一个组件(类):代码:package com.atguigu.bean;public class Person { private String lastName; private Integer age; private String gender; private String email; public String getLastName() { return原创 2021-01-20 17:19:12 · 70 阅读 · 0 评论 -
【后端】定制自己的错误信息(客户端)
1.新建一个控制器,用于前端向后端发送请求失败后提示错误信息(客户端)代码如下:package com.atguigu.springboot.controller;import com.atguigu.springboot.exception.UserNotExistException;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annot原创 2021-01-15 17:09:11 · 129 阅读 · 1 评论 -
【后端】如何定制自己的错误界面(浏览器)
1.新建一个异常处理类package com.atguigu.springboot.exception;public class UserNotExistException extends RuntimeException{ private void supper(String 用户不存在) { } public UserNotExistException() { supper("用户不存在"); }}2.在控制器中设置错误抛出 @R原创 2021-01-15 16:40:27 · 319 阅读 · 2 评论 -
【后端】创建拦截器——用户必须先通过某个界面(如:登录界面),进入到另个页面
用户必须先通过某个界面A(如:登录界面)后才能进入另一个界面B,即不能直接跳过A界面直接进如B界面1.创建拦截器类:代码如下(Ctr+o添加类中方法):import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.ser原创 2021-01-13 21:18:08 · 668 阅读 · 0 评论