slf4j

spring cloud security oauth2自定义参数认证源码配置

99封情书 提交于 2020-12-25 10:42:24
1、继承UsernamePasswordAuthenticationToken,自定义接收参数 package com.mx.octoo.auth.authentication ; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken ; import org.springframework.security.core.GrantedAuthority ; import java.util.Collection ; public class TenantAuthenticationToken extends UsernamePasswordAuthenticationToken { private static final long serialVersionUID = 8217066478491458584L ; private final String tenantCode ; // ~ Constructors // =================================================================================================== /** * This constructor

Lombok基础使用介绍

匆匆过客 提交于 2020-12-23 00:42:25
Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。 官网地址: https://projectlombok.org/ 一、安装插件 这里以Intellij IDE(Mac版)为例,依次打开 Preferences -> Plugins -> 搜索Lombok插件安装。 我这里已经安装了,所以是update。 二、添加依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> </dependency> 三、Lombok内容概览 var 所声明的变量是非 final 的。 val 所声明的变量是 final 的。 @Getter 注解在属性(类)上,为属性(所有非静态成员变量)提供 get() 方法 @Setter 注解在属性(类)上,为属性(所有非静态成员变量)提供 set() 方法 @ToString 该注解的作用是为类自动生成 toString() 方法 @EqualsAndHashCode 为对象字段自动生成 hashCode() 和 equals

基于spring-data 实现mongodb changestream

帅比萌擦擦* 提交于 2020-12-22 05:05:29
最近项目要求对mongodb的数据变更操作记录操作日志,首先想到的是基于spring的AOP对变更的接口进行拦截处理,由于调用接口的点很多不是很方便的去梳理,考虑使用mongodb的CDC机制,实时监控数据的变更。 首先是springboot集成mongodb,mongdb需要是3.6以上的版本才能支持changestream <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> </dependencies> 首先配置mongo监听器,用于接收数据库的变更信息 import com.mongodb.client.model.changestream.ChangeStreamDocument; import lombok.extern.slf4j. Slf4j

MyBatis知识点总结(一)

五迷三道 提交于 2020-12-19 10:38:10
前言:本篇主要记录在MyBatis学习过程中的主要知识点。 1.mybatis环境的搭建,通过maven可以快速的进行环境的搭建。 1 <!-- 文件版本 --> 2 < properties > 3 < mybatis.version > 3.4.5 </ mybatis.version > 4 < junit.version > 4.12 </ junit.version > 5 < mysql-driver.version > 5.1.38 </ mysql-driver.version > 6 < log4j.version > 1.2.17 </ log4j.version > 7 < slf4j.version > 1.7.25 </ slf4j.version > 8 < mbg.version > 1.3.6 </ mbg.version > 9 </ properties > 10 11 < dependencies > 12 < dependency > 13 < groupId > org.mybatis </ groupId > 14 < artifactId > mybatis </ artifactId > 15 < version > ${mybatis.version} </ version > 16 </ dependency > 17 18 <

RSA加解密

雨燕双飞 提交于 2020-12-16 20:33:30
公私钥生成 import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.security.Key; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.util.HashMap; import java.util.Map; public class CreateSecrteKey { public class Keys { } public static final String KEY_ALGORITHM = "RSA"; //public static final String SIGNATURE_ALGORITHM = "MD5withRSA"; private static final String PUBLIC_KEY = "knpubPublicKey"; private static final String PRIVATE_KEY = "knpubPrivateKey"; //获得公钥

Java中SPI机制详解

谁说我不能喝 提交于 2020-12-13 14:03:27
本文转载于 高级开发必须理解的Java中SPI机制 本文通过探析JDK提供的,在开源项目中比较常用的Java SPI机制,希望给大家在实际开发实践、学习开源项目提供参考。 一、 SPI是什么 SPI全称 Service Provider Interface ,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。 整体机制图如下: Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。 系统设计的各个抽象,往往有很多不同的实现方案,在面向的对象的设计里,一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。为了实现在模块装配的时候能不在程序里动态指明,这就需要一种服务发现机制。 Java SPI就是提供这样的一个机制:为某个接口寻找服务实现的机制。有点类似IOC的思想,就是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要。所以SPI的核心思想就是解耦。 二、使用场景 概括地说,适用于:调用者根据实际使用需要,启用、扩展、或者替换框架的实现策略。 比较常见的例子: 数据库驱动加载接口实现类的加载 JDBC加载不同类型数据库的驱动 日志门面接口实现类加载 SLF4J加载不同提供商的日志实现类 Spring

SLF4J put and immediate get is failing

二次信任 提交于 2020-12-13 04:53:29
问题 I've written a little wrapper for SLF4J MDC. import org.slf4j.MDC; import java.util.UUID; public final class MdcWrapperUtility { public static final String MDC_TRANSACTION_ID_KEY_NAME = "MDC_TRANSACTION_ID"; private MdcWrapperUtility() { } public static String getId() { String threadName = Thread.currentThread().getName(); String returnValue = MDC.get(MDC_TRANSACTION_ID_KEY_NAME); return returnValue; } public static String setId() { String threadName = Thread.currentThread().getName(); String

Hadoop小文件利器Ozone

那年仲夏 提交于 2020-12-12 22:59:34
大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! Ozone诞生的背景 众所周知,HDFS是大数据存储系统,并在业界得到了广泛的使用。但是无论大集群还是小集群其扩展性都受NN的限制, 虽然HDFS可以通过Federation进行扩展,但是依然深受小文件和4亿个文件的困扰 。 于是分布式key-value存储系统Ozone诞生了,Ozone能够轻松管理小文件和大文件。(HDFS提供了类似POSIX的语义,Ozone的外观和行为更像一个Object存储系统。) Ozone Ozone是专门为Hadoop设计的可扩展的分布式对象存储系统。Hadoop生态中的其它组件如Spark、Hive和Yarn不需要任何修改就可以直接运行在Ozone之上。 Ozone的使用方式也较为丰富,可以通过命令行直接使用也有java客户端接口,而且接口支持RPC和REST。 Ozone由 volumes、buckets和Keys 组成,其中 Volumes只有管理员能够创建和删除,类似账号的概念,管理员一般都是给某个团队或者组织创建一个Volume。 Buckets有点像目录, 不过这个只能有一层,因为Buckets中不能包含其它Buckets 。Buckets是在Volume下,一个Volume可以包含n个Buckets, 但是Buckets下面只能是Keys

环境搭建

我们两清 提交于 2020-12-12 18:18:34
创建项目 使用 IDEA 建立一个 Maven 项目。 打开 pom.xml 文件,修改 <packaging>war</packaging> 建立如下目录: 选中项目,点击刷新即可。 加入依赖 <?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/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.yun</groupId> <artifactId>ssm</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>ssm</name> <description>SpringMVC + Spring + MyBatis</description> <properties> <project.build

Spring Boot 事件和监听

北慕城南 提交于 2020-12-12 10:12:45
Application Events and Listeners 1、自定义事件和监听 1.1、定义事件 1 package com.cjs.boot.event; 2 3 import lombok.Data; 4 import org.springframework.context.ApplicationEvent; 5 6 @Data 7 public class BlackListEvent extends ApplicationEvent { 8 9 private String address; 10 11 public BlackListEvent(Object source, String address) { 12 super (source); 13 this .address = address; 14 } 15 } 1.2、定义监听 1 package com.cjs.boot.event; 2 3 import org.springframework.context.ApplicationListener; 4 import org.springframework.context.event.EventListener; 5 import org.springframework.stereotype.Component; 6 7 8 public