202009-24 Spring security实现对账户进行加密 一、原理分析1.1加密原理首先前端页面发送注册的账户信息到controller层,然后依次经过service层和dao层,最后入库。其中对密码的加密应该放在service层进行,加密后再入库。springsecurity中有一个加密类BCryptPasswordEncoder可以用来对密码进行加密,调用其中的encode方法返回一个加密后的字符串publicStringencode(CharSequencerawPassword){Stringsalt;if(strength>0){if(random!=null){sa... 继续阅读 >
202009-24 Spring security BCryptPasswordEncoder密码验证原理详解 一、加密算法和hash算法的区别加密算法是一种可逆的算法,基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,但在用相应的密钥进行操作之后就可以得到原来的内容。哈希算法是一种不可逆的算法,是把任意长度的输入通过散列算法变换成固定长度的输出,输出就是散列值,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。二、源码解析BCryptPasswordEncoder类... 继续阅读 >
202009-24 Spring如何基于aop实现事务控制 spring的事务控制本质上是通过aop实现的。在springboot中使用时,可以通过注解@Transactional进行类或者方法级别的事务控制,也可以自己通过spring提供的事务管理器手动控制事务一、@Transactional注解进行进行类或者方法级别的事务控制不需要进行特别的设置,按照正常的配置整合spring和mybatis后,在需要进行事务控制的类上或者方法上加上@Transactional注解,即可对其进行事务控制。二、手动控制事务当需要在一个方法的内部进行... 继续阅读 >
202009-24 基于spring@aspect注解的aop实现过程代码实例 @AspectJ作为通过Java5注释注释的普通的Java类,它指的是声明aspects的一种风格。通过在你的基于架构的XML配置文件中包含以下元素,@AspectJ支持是可用的。第一步:编写切面类packagecom.dascom.hawk.app.web.tool;importorg.aspectj.lang.JoinPoint;importorg.aspectj.lang.ProceedingJoinPoint;importorg.aspectj.lang.annotation.After;importorg.aspectj.lang.annotation.Around;importorg.aspectj.lang.anno... 继续阅读 >
202009-24 Spring bean生命周期配置过程解析 1.实例化beanAbstractAutowireCapableBeanFactory类中的createBeanInstance(beanName,mbd,args);2.为bean注入属性AbstractAutowireCapableBeanFactory类中的populateBean(beanName,mbd,instanceWrapper);3.调用各种实现的Aware接口(BeanNameAware,BeanFactoryAware,ApplicationContextAware),调用相关的set方法AbstractAutowireCapableBeanFactory类中invokeAwareMethods(beanName,bean);4.调用BeanPostProcessor的post... 继续阅读 >
202009-24 Spring Boot Actuator执行器运行原理详解 SpringBoot执行器(Actuator)提供安全端点,用于监视和管理SpringBoot应用程序。默认情况下,所有执行器端点都是安全的。在本章中,将详细了解如何为应用程序启用SpringBoot执行器。启用SpringBootActuator要为SpringBoot应用程序启用SpringBoot执行器端点,需要在构建配置文件中添加SpringBootStarter执行器依赖项。Maven用户可以在pom.xml文件中添加以下依赖项。<dependency><groupId>org.springframework.boot</gr... 继续阅读 >
202009-24 Spring Boot Admin Server管理客户端过程详解 要通过SpringBootAdminServer监视和管理微服务应用程序,应该添加SpringBootAdmin启动器客户端依赖项,并将AdminServerURI指向应用程序属性文件。注-要监视应用程序,应为微服务应用程序启用SpringBootActuator端点。首先,在构建配置文件中添加以下SpringBootAdmin启动程序客户端依赖项和SpringBoot启动程序执行程序依赖项。Maven用户可以在pom.xml文件中添加以下依赖项-<dependency><groupId>de.codecentric</... 继续阅读 >
202009-24 spring使用redis操作key-value的示例代码 连接到RedisRedis连接工厂会生成到Redis数据库服务器的连接。SpringDataRedis为四种Redis客户端实现提供了连接工厂:JedisConnectionFactoryJredisConnectionFactoryLettuceConnectionFactorySrpConnectionFactory具体选择哪一个取决于你。我建议你自行测试并建立基准,进而确定哪一种Redis客户端和连接工厂最适合你的需求。从SpringDataRedis的角度来看,这些连接工厂在适用性上都是相同的。在做出决策之... 继续阅读 >
202009-24 Spring Boot Rest控制器单元测试过程解析 SpringBoot提供了一种为RestController文件编写单元测试的简便方法。在SpringJUnit4ClassRunner和MockMvc的帮助下,可以创建一个Web应用程序上下文来为RestController文件编写单元测试。单元测试应该写在src/test/java目录下,用于编写测试的类路径资源应该放在src/test/resources目录下。对于编写单元测试,需要在构建配置文件中添加SpringBootStarterTest依赖项,如下所示。<dependency><groupId>org.springframework.boo... 继续阅读 >
202009-24 Spring BeanFactory和FactoryBean区别解析 BeanFactory接口:IoC容器的顶级接口,是IoC容器的最基础实现,也是访问Spring容器的根接口,负责对bean的创建,访问等工作。其实在容器的初始化的时候,会对BeanFactory做很多事情,如:obtainFreshBeanFactory();获取BeanFactory;prepareBeanFactory(beanFactory);BeanFactory的预准备工作(BeanFactory进行一些设置)postProcessBeanFactory(beanFactory);BeanFactory准备工作完成后进行的后置处理工作;invokeBeanFactoryPost... 继续阅读 >
202009-24 Spring Cloud Feign组成配置过程解析 Feign的组成接口作用默认值Feign.BuilderFeign的入口Feign.BuilderClientFeign底层用什么去请求和Ribbon配合时:LoadBalancerFeignClient不和Ribbon配合时:Fgien.Client.DefaultContract契约,注解支持SpringMVCContractEncoder... 继续阅读 >
202009-24 Spring Cloud Feign性能优化代码实例 1、替换tomcat首先,把tomcat换成undertow,这个性能在Jmeter的压测下,undertow比tomcat高一倍第一步,pom修改去除tomcat<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></d... 继续阅读 >
202009-24 Spring Cloud Stream分区分组原理图解 消息分组通常在生产环境,我们的每个服务都不会以单节点的方式运行在生产环境,当同一个服务启动多个实例的时候,这些实例都会绑定到同一个消息通道的目标主题(Topic)上。默认情况下,当生产者发出一条消息到绑定通道上,这条消息会产生多个副本被每个消费者实例接收和处理,但是有些业务场景之下,我们希望生产者产生的消息只被其中一个实例消费,这个时候我们需要为这些消费者设置消费组来实现这样的功能。当把消费者复制一份... 继续阅读 >
202009-24 Spring Security常用过滤器实例解析 SpringSecurity常见的15个拦截器1.org.springframework.security.web.context.SecurityContextPersistenceFilter首当其冲的一个过滤器,作用之重要,自不必多言。SecurityContextPersistenceFilter主要是使用SecurityContextRepository在session中保存或更新一个SecurityContext,并将SecurityContext给以后的过滤器使用,来为后续filter建立所需的上下文。SecurityContext中存储了当前用户的认证以及权限信息。2.org.s... 继续阅读 >
202009-24 Spring RabbitMQ死信机制原理实例详解 死信队列:没有被及时消费的消息存放的队列,消息没有被及时消费有以下几点原因:1.有消息被拒绝(basic.reject/basic.nack)并且requeue=false2.队列达到最大长度3.消息TTL过期采用死信机制的好处是可以提高系统的稳定性,当消息消费失败后,消息进入死信队列,可以对消息进行补偿,可以达到最终一致性的目标.具体例子如下:@BeanpublicQueuedeadQueue(){returnnewQueue(DEAD_QUEUE_NAME,true);}@BeanpublicDirec... 继续阅读 >
202009-24 Spring Boot JPA中使用@Entity和@Table的实现 本文中我们会讲解如何在SpringBootJPA中实现class和数据表格的映射。默认实现SpringBootJPA底层是用Hibernate实现的,默认情况下,数据库表格的名字是相应的class名字的首字母大写。命名的定义是通过接口ImplicitNamingStrategy来定义的:/***Determinetheimplicitnameofanentity'sprimarytable.**@paramsourceThesourceinformation**@returnTheimplicittablename.*/publicIdentifi... 继续阅读 >