202010-10 dubbo新手学习之事件通知实践教程 前言今天主要给大家分享一下dubbo的事件通知机制。先看下dubbo中文官网的示例解释:事件通知。在调用之前、调用之后、出现异常时,会触发oninvoke、onreturn、onthrow三个事件,可以配置当事件发生时,通知哪个类的哪个方法.实践溪源目的是快速学习dubbo的相关机制,故定义的相同的接口和方法,采用分包的方式解耦合,便于后期维护。先看服务接口dubbo-demo-interface目录如图**UserNotifyService**/***@authorwx*@date20... 继续阅读 >
202010-10 Spring注解开发生命周期原理解析 生命周期initMethod和destroyMethodBean定义publicclassCar{publicCar(){System.out.println("carconstructor");}publicvoidinit(){System.out.println("carinit");}publicvoiddestroy(){System.out.println("cardestroy");}}配置类bean创建--初始化--销毁可以自定义初始化和销毁方法初始化:对象创建完成,并赋值完成,调用初始化方法销毁:容器关闭进行销毁(单实例)多实... 继续阅读 >
202010-10 一篇文章带你搞定SpringBoot不重启项目实现修改静态资源 一、通过配置文件控制静态资源的热部署在配置文件application.properties中添加:#表示从这个默认不触发重启的目录中除去static目录spring.devtools.restart.exclude=classpath:/static/**或者使用:#表示将static目录加入到修改资源会重启的目录中来spring.devtools.restart.additional-paths=src/main/resource/static此时对static目录下的静态资源文件做修改,点击构建,则会达到和热部署一样的作用效果但是这两种方法用处... 继续阅读 >
202010-10 Spring @Value 设置默认值的实现 1.概览Spring的@Vaule注解提供了一种便捷的方法可以让属性值注入到组件中,当属性值不存在的时候提供一个默认值也是非常好用的这就是我们这篇文章所专注的,如何给@Vaule注解指定一个默认值。对于更多的关于@Vaule的教程看这篇文章2.String默认值让我们看看对于String类型的值,给定一个默认值得基础语法@Value("${some.key:mydefaultvalue}")privateStringstringWithDefaultValue;如果some.key无法解析,那么stri... 继续阅读 >
202010-10 Spring AOP面向切面编程实现及配置详解 动态代理特点字节码随用随创建,随用随加载作用不用修改源码对方法增强分类基于接口的动态代理基于子类的动态代理创建使用Proxy类中的newProxyInstance方法要求被代理类最少实现一个接口,没有则不能使用newProxyInstance方法参数classLoader:类加载器用于加载代理对象字节码的,和被代理对象使用相同的类加载器class[]:字节码数组用于让代理对象和被代理对象有相同方法,固定写法。InvocationHandler:用于提供增强的代码是让... 继续阅读 >
202010-10 Spring注解开发@Bean和@ComponentScan使用案例 组件注册用@Bean来注册搭建好mavenweb工程pom加入spring-context,spring-core等核心依赖创建实例类com.hjj.bean.Person,生成getter,setter方法publicclassPerson{privateStringname;privateintage;}创建com.hjj.config.MainConfig@Configuration//告诉spring是一个配置类publicclassMainConfig{//给容器中注册一个Bean,类行为返回值的类型,id默认是用方法名作为id@Bean("mikePerson")publicPersonpe... 继续阅读 >
202010-10 Spring5.2.x 源码本地环境搭建的方法步骤 1克隆Spring源码github下载可能较慢,可以先fork官方仓库到自己的账户下,再从gitee导入。使用sourceTree拉取代码到本地。切换到5.2.x版本gitcheckoutorigin/5.2.x添加阿里云镜像将下面这行代码粘贴到build.gradle文件中的repositories节点下即可,maven{url"http://maven.aliyun.com/nexus/content/groups/public"}预先编译spring-oxm模块切换命令行到源码路径,执行./gradlew:spring-oxm:compileTestJavaBUILDS... 继续阅读 >
202010-10 Spring maven filtering使用方法详解 SpringEL表达式取值一般是${var}方式取值,见于application.properties和@Value("${var}")中maven的pom.xml文件中也有类似的取值表达式,也是通过${var}的方式取值然而:它们并不是一个东西!EL表达式适用于配置文件及代码中的注解maven的占位符取值表达式默认仅仅适用于pom.xml文件中我们的需求大多是想打通二者的交流,如何做?此时filtering就派上用场了maven的占位符解析表达式的使用场合默认只在pom文件范围内活动如果想扩大... 继续阅读 >
202010-10 spring boot 项目中使用thymeleaf模板的案例分析 准备MySql数据库,表Prereg,IDEA数据库中的表如下所示:IDEA目录结构如下:添加thymeleaf依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>开始添加代码:在controller包添加类“PreregController”packagecom.example.demo.controller;importcom.example.demo.mapper.PreregMapper;importcom.example.demo.pojo.Prereg;importorg.sprin... 继续阅读 >
202010-10 Spring Security自定义登录原理及实现详解 1.前言前面的关于SpringSecurity相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从SpringSecurity实战系列开始。安全访问的第一步就是认证(Authentication),认证的第一步就是登录。今天我们要通过对SpringSecurity的自定义,来设计一个可扩展,可伸缩的form登录功能。2.form登录的流程下面是form登录的基本流程:只要是form登录基本都能转化为上面的流程。接下来我们看看SpringSecurity是... 继续阅读 >
202010-10 Spring Security保护用户密码常用方法详解 1.前言本节将对SpringSecurity中的密码编码进行一些探讨。2.不推荐使用md5首先md5不是加密算法,是哈希摘要。以前通常使用其作为密码哈希来保护密码。由于彩虹表的出现,md5和sha1之类的摘要算法都已经不安全了。如果有不相信的同学可以到一些解密网站如cmd5网站尝试解密你会发现md5和sha1是真的非常容易被破解。3.SpringSecurity中的密码算法ObjectProvider<PasswordEncoder>参数。这里的PasswordEncoder`就是... 继续阅读 >
202010-10 Spring Boot如何使用Undertow代替Tomcat 1.Undertow简介Undertow是一个采用Java开发的灵活的高性能Web服务器,提供包括阻塞和基于NIO的非堵塞机制。Undertow是红帽公司的开源产品,是Wildfly默认的Web服务器。Undertow提供一个基础的架构用来构建Web服务器,这是一个完全为嵌入式设计的项目,提供易用的构建器API,完全向下兼容JavaEEServlet3.1和低级非堵塞的处理器。2.Undertow特点高性能在多款同类产品的压测中,在高并发情况下表现出色。... 继续阅读 >
202010-10 Spring Security UserDetails实现原理详解 1.前言今天开始我们来一步步窥探它是如何工作的。我们又该如何驾驭它。本篇将通过SpringBoot2.x来讲解SpringSecurity中的用户主体UserDetails。以及从中找点乐子。2.SpringBoot集成SpringSecurity这个简直老生常谈了。不过为了照顾大多数还是说一下。集成SpringSecurity只需要引入其对应的Starter组件。SpringSecurity不仅仅能保护ServletWeb应用,也可以保护ReactiveWeb应用,本文我们讲前者。我们只需要... 继续阅读 >
202010-10 Spring Security如何优雅的增加OAuth2协议授权模式 一、什么是OAuth2协议?OAuth2.0是一个关于授权的开放的网络协议,是目前最流行的授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。由于授权的场景众多,OAuth2.0协议定义了获取令牌的四种授权方式,分别是:授权码模式:授权码模式(authorizationcode)是功能最完整、流程最严密的授权模式。它的特点就是通过客户... 继续阅读 >
202010-10 Spring Security实现不同接口安全策略方法详解 1.前言欢迎阅读SpringSecurity实战干货系列文章。最近有开发小伙伴提了一个有趣的问题。他正在做一个项目,涉及两种风格,一种是给小程序出接口,安全上使用无状态的JWTToken;另一种是管理后台使用的是Freemarker,也就是前后端不分离的Session机制。用SpringSecurity该怎么办?2.解决方案我们可以通过多次继承WebSecurityConfigurerAdapter构建多个HttpSecurity。HttpSecurity对象会告诉我们如何验证用户的身份,如何... 继续阅读 >
202010-10 Spring Boot读取配置属性常用方法解析 1.前言在SpringBoot项目中我们经常需要读取application.yml配置文件的自定义配置,今天就来罗列一下从yaml读取配置文件的一些常用手段和方法。2.@Value首先,会想到使用@Value注解,该注解只能去解析yaml文件中的简单类型,并绑定到对象属性中去。felord:phone:182******32def:name:码农小胖哥blog:felord.cnwe-chat:MSW_623dev:name:码农小胖哥blog:felord.cnwe-chat:MSW_623type:JUEJIN对于上面的yam... 继续阅读 >