- 博客(32)
- 收藏
- 关注
原创 自定义全局处理异常,并将报错的类名、方法名和行数 返回给前端
自定义异常 ,全局异常处理 ,并把报错所在的类名、方法名和行数返回给前端,方便异常的排查和定位
2022-08-25 15:19:31 732
原创 记录一次线上问题,调用静态方法出现java.lang.NoClassDefDoundError:xxx/xxx/xxx/xxx/类名 异常
java.lang.NoClassDefDoundError:xxx/xxx/xxx/xxx/类A 异常
2022-07-01 21:40:59 768
原创 spring、springboot集成 log4j日志、log4j2日志以及slf4j
1、查看pringboot自带的日志框架新建一个springboot 工程,查看依赖树通过查看依赖树可以发现,springboot自带被loggong管理的log4j 、logback等日志相关的依赖。为了不影响测试结果,手动排除掉龙宫依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-
2022-03-27 23:34:17 2599 1
原创 springboot集成安全框架springsecurity
注意,在配置过滤器时 每个权限/角色配置操作前面都要写上请求路径如: .anyRequest() 请求路径.authenticated()//都需要认证操作 是权限/角色操作三种用户认证方式(设置用户名密码的)第一种:通过配置文件(非查库)应用添加security依赖后,在application配置文件中写入spring.security.user.name和spring.security.user.password即可,若注入成功 控制台不会报security框架自动生成的初始密码#
2021-09-21 23:32:17 320
原创 应用程序复制 /应用程序代码一样,只有端口号不同,如何偷懒启动两个程序
当有一个服务,端口号为 8001, 现在需要新建一个端口号为 8002 的程序,该程序与8001完全一致,只有端口号不同。这时 ,我们可以通过端口映射,启动8002,把8002映射到8001上即可。这时 8001与8002都可访问。在做如下配置前先启动8001服务:设置好后,在如图位置生成如图所示的启动选项,右键 return, 此时虽然为 return,但是原先的8001会依旧在后台运行。...
2021-09-15 22:41:20 170
原创 java自定义注解及其功能实现 spring+Aop
思路概括利用面向切面的代理模式(aop),将 凡是被 自定义注解 标注的方法/类 ,都被代理。在元方法中写正常的业务逻辑,在代理类中利用反射 写上注解的功能。ps: 非spring项目 自定义注解功能 也可由代理来实现。demo环境springboot + aop ,使用业务行为记录功能aop依赖 <dependency> <groupId>org.springframework.boot</groupId>
2021-09-11 16:38:56 334
原创 jwt (json web token) + springboot
jwt官网 :https://jwt.io/jwt 官网介绍jwt就是一json串,且该串不需要服务器保存,一旦生成 不可撤销、不可删除,在到达设置的过期时间之前一直都有效。jwt的作用一言以蔽之:作为数据安全校验,且该条数据不是完全加密,而是采用的部分加密。没有加密的部分是用来做传递信息的(如允许被外界识别的用户类型、用户名),加密的那部分才是用来做校验的。可以把token放在请求头中或者cookie中。认证流程首先,前端通过Web表单将用户名和密码发送到后端的接口。这一过程一般是
2021-09-04 11:09:43 969
原创 springcloud集成openFeign
集成环境springcloud h 版 springboot 2.3.12版使用eureka作为注册中心配置两个服务提供者,一个消费者,消费者使用openf作为 rest客户端工具官网使用方法介绍官网的介绍很简单:启动类加上启动注解 ,再加一个 interface并指定服务名称代码编写接口package com.li.service;import com.li.entities.Provider;import org.springframework.cloud.openfeign.
2021-08-13 22:13:22 612
原创 springcloud利用DiscoveryClient自定义负载均衡策略
原理利用 springcloud提供的 DiscoveryClient 服务发现功能,获取注册在注册中心的服务列表,然后根据一定算法从该列表中选择一个作为本次调用服务的服务提供者。开发前准备微服务项目,需要有注册中心,有服务提供者和服务消费者本例使用 eureka 作为注册中心,两个提供者,一个消费者http客户端使用 RestTemplate 作为远程调用的client注意不要使用 @LoadBalanced 这个负载均衡的注解package com.li.config;import
2021-08-11 23:41:28 673
原创 Ribbon的使用
引入ribbon现在的 ribbon 基本上不需要单独引用,因为绝大多数的注册中心(eureka,consul等)都会集成它ribbon 的使用ribbon的使用 非常简单,在 resttemplate加上 @loadbalance 注解,就代表使用了ribbon的负载均衡功能package com.li.config;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframe
2021-08-08 19:16:15 1179
原创 springboot集成swagger
swagger2是什么pom从maven repository 找到使用最多的依赖版本(出问题了更容易找到解决办法) <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId&g
2021-08-05 22:38:41 97
原创 springcloud父工程环境搭建以及子项目的搭建与引用
springcloud技术选型由于springcloud管理的微服务架构众多,为了让自己在项目后期解决环境冲突问题,请严格按照官网给出的 boot 与cloud 对应关系进行选型。springcloud官网粗略对应关系图以 Hoxton.SR12版为例,查看细粒度的版本对应关系由官网可知,与Hoxton.SR12最为搭配的是 boot 2.3.12.REKEASE 版本创建父工程新建maven父工程 ,选择一个最简单的 site模板创建完成后,删除src等目录,只留下pom文件
2021-08-01 13:44:37 2876 1
原创 springcloud集成hmily遇到的天坑(错误、问题)报错 com.mongodb.MongoSocketOpenException: Exception opening socket
项目集成hmily时发现的两个天坑,遇到这连个问题后 由于网上关于hmily的文章很少很少,所以定位问题的时候很头疼,但很庆幸的事 最后都解决了。看到本篇文章的小伙伴 希望对你能有点帮助天坑一:日志冲突解决办法是排除掉hmily自带的日志框架 <dependency> <groupId>org.dromara</groupId> <artifactId>hmily-spring-boot-starter-
2021-07-27 19:15:52 850 4
原创 springcloud集成seata+euraka 构成的分布式事务控制(待补充)
seata官方文档http://seata.io/zh-cn/docs/overview/what-is-seata.html最新版的seata比之前的旧版配置起来少配了东西,精简了很多只需要配置三个部分,一是servert端的 registry.conf 文件,另一个是clent端的yaml文件,最后一个则是代理数据源。因此,新版seata使我们的配置出错率大大降低了。注册中心的搭建seata 的server端配置与启动启动seata之前要先启动注册中心 ,并配置seata的conf目录下的
2021-07-26 10:12:34 424
原创 servlet的作用、生命周期与案例
servlet是什么?有什么用?通俗的说 servlet 的本质是一个java程序 ,Servlet 同时也是连接 Web 服务器与服务端 Java 程序的协议,是一种通信规范。这个规范是以一套接口的形式体现的。作用:当浏览器通过http调用web服务器(如 romcat)时,web服务器通过servlet来调用我们在后台写的java程序,且web服务器只能调用实现了servlet接口的类,所以web服务器想调用后台程序时就需要通多servlet来调用该方法中定义了servlet在get、post
2021-07-24 15:16:12 1161
原创 JVM调优案例(仅供启迪不知道jvm调优如何下手的同学参照)
准备工作安装调优工具 jprofileridea 集成 jprofiler 插件写一个内存溢出的demo,并配置启动参数dump堆栈信息使用工具分析dump下来的文件安装 jprofiler官网下载安装 输入激活码即可,网上有很多教程idea 集成 jprofiler 插件集成成功后 ,idea上会显示小标志配置jprofiler路径内存溢出的demopackage com.li;import java.util.HashMap;import java.util.
2021-07-17 11:43:41 281 1
原创 后端接收前端url请求传的一个数组ids
#方法一: 使用可变参数长度 接收 @RequestMapping("/1") public void receive(String ...parms){//三个点表示可变参数 System.out.println("parms.length="+parms.length); for (int i = 0; i < parms.length; i++) { System.out.println(parms[i]); }
2021-06-30 19:10:40 2127
原创 pringboot整合javamil发送邮件
依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>```yamlserver: port: 8001spring: mail: host: smt
2021-06-30 00:11:05 127
原创 springboot项目中获取自定义的properties文件的属性
准备工作properties文件映射properties文件的配置类使用到的关键注解@Component //将bean交给spring管理@ConfigurationProperties(prefix = “前缀”) //除了前缀属性外,还可以添加其它属性,有想法的同学可以查看源码。 作用:将该类与外部配置文件绑定起来,就是与properties文件绑定起来![在这里插入图片描述](https://img-blog.csdnimg.cn/20210629203150765.
2021-06-29 20:51:25 258
原创 同步方法中加static与不加static的区别 、类锁
同步方法中加static与不加static的区别无static时无static时在不加static时候 ,synchronized默认的锁对象为 this,也就是调用该方法的那个对象,对于同一个对象调用的不同的同步方法,无论如何休眠,先执行结束的都是 先拿到锁的那个线程```javapublic class Test_1{ public static void main(String[] args) throws InterruptedException { A a=new
2020-12-20 00:04:57 1050 3
原创 输入一个起始日期,循环输出日期的前一天和后一天
输入一个起始日期,循环输出日期的前一天和后一天import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.Map;/** 日期转换 实现加一天 * */public class Test02 { public static v
2020-11-24 11:55:17 660
原创 Mybatis-Plus之代码生成器
一 初始化一个springboot 项目导入依赖mybatis–plus依赖lombok依赖mysql驱动依赖swragger依赖模板引擎依赖在做这些之前首先准备一个user表,内容自定义<?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"
2020-09-21 15:24:02 250
原创 springboot整合Mybatis-Plus框架,步骤详细 适合小白
一、看官方文档不要偷懒导入依赖:依赖的配置研究代码二、创建一个数据库create database mybatis_plus;DROP TABLE IF EXISTS user;CREATE TABLE user( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年龄', ema
2020-09-21 12:32:40 873
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人