202010-08 Spring session实现共享单点登录案例过程解析 一、项目构建1、案例说明本文主要演示单点登录功能,会贴出主要配置和代码以及必要解释,全部代码请参考git地址。session共享一个基本原则是将session存储在某个地方,所有的应用都可以访问,这里使用redis存储session。当应用需要认证时,先从redis读取用户信息。2、基本配置1)pom.xml<dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId></... 继续阅读 >
202010-08 Spring数据库多数据源路由配置过程图解 项目中需要根据不同业务进行分库,首先是将业务不同业务映射到不同过的数据库(biz-->db,可能存在多对一情况),查看springjdbc源码发现AbstractRoutingDataSource类作为一个数据源路由抽象类,可以担当这个事情,其设计思想也比较简单,首先将多个数据源的映射关系自己维护完成后注入进来,然后自己定义一个路由规则,重点部分见代码:首先可以看到该类是一个抽象类,重点关注变量targetDataSource和resolvedDataSources.其中ta... 继续阅读 >
202010-08 使用Spring Boot搭建Java web项目及开发过程图文详解 一、SpringBoot简介SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapidapplicationdevelopment)成为领导者。SpringMVC是非常伟大的框架,开源,发展迅速。优秀的设计必然会划分、解耦。所以,spring有很多子项目,比如core、conte... 继续阅读 >
202010-08 Spring MVC数据绑定概述及原理详解 数据绑定概述在执行程序时,SpringMVC根据客户端请求参数的不同,将请求消息中的信息以一定的方式转换并绑定到控制器类的方法参数中。这种将请求消息数据与后台方法参数建立连接的过程就是SpringMVC中的数据绑定。在数据绑定过程中,SpringMVC框架会通过数据绑定组件(DataBinder)将请求参数串的内容进行类型转换,然后将转换后的值赋给控制器类中方法的形参,这样后台方法就可以正确绑定并获取客户端请求携带的参数。具体的... 继续阅读 >
202010-08 Spring AOP注解案例及基本原理详解 切面:Aspect切面=切入点+通知。在老的spring版本中通常用xml配置,现在通常是一个类带上@Aspect注解。切面负责将横切逻辑(通知)编织到指定的连接点中。目标对象:Target将要被增强的对象。连接点:JoinPoint可以被拦截到的程序执行点,在spring中就是类中的方法。切入点:PointCut需要执行拦截的方法,也就是具体实施了横切逻辑的方法。切入点的规则在spring中通过AspectJpointcutexpressionlanguage来描述。切入点与连接... 继续阅读 >
202010-08 Spring @RestController注解组合实现方法解析 Spring中存在很多注解组合的情况,例如@RestController@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Controller@ResponseBodypublic@interfaceRestController{/***Thevaluemayindicateasuggestionforalogicalcomponentname,*tobeturnedintoaSpringbeanincaseofanautodetectedcomponent.*@returnthesuggestedcomponentname,ifany(oremptyStringotherwis... 继续阅读 >
202010-08 简单了解Spring beanfactory循环依赖命名重复属性 是否允许循环依赖和bean的命名重复取决于beanfactory的两大属性allowBeanDefinitionOverriding和allowCircularReferences。这两个属性未指定时取的是DefaultListableBeanFactory中的默认值,均为true,即默认允许同名bean和循环引用(只有单例允许)。但是假如读者用的springboot版本比较新,就会发现情况并不是这样,同名bean会冲突报错。为什么呢,跟踪源码发现是Springboot应用在2.1.8版本的时候给bean名冲突设定了默认值为fals... 继续阅读 >
202010-08 Spring Security学习之rememberMe自动登录的实现 前言自动登录是将用户的登录信息保存在用户浏览器的cookie中,当用户下次访问时,自动实现校验并建立登录态的一种机制。SpringSecurity提供了两种非常好的令牌:散列算法加密用户必要的登录信息并生成令牌数据库等持久性数据存储机制用的持久化令牌散列加密方案在SpringSecurity中加入自动登录的功能非常简单:@Overrideprotectedvoidconfigure(HttpSecurityhttp)throwsException{http.authorizeRequests().antMa... 继续阅读 >
202010-08 Spring security认证两类用户代码实例 向容器中添加一个自定义的认证类实现UserDetailsService在这个类里面就可以进行用户类型的判断,包括三类用户(管理员使用内存认证,老师和学生都使用数据库认证)然后在然后在configure里面设置认证的类和密码的加密方式以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。... 继续阅读 >
202010-08 如何基于spring security实现在线用户统计 1.修改web.xml,需要在web.xml描述文件中配置中使得o.s.s.web.session.HttpSessionEventPublisher生效,这样servelt容器将会通知SpringSecuritysession生命周期的事件(通过HttpSessionEventPublisher)<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><listener><listener-class>org.springframework.security.web.session.HttpSessionEven... 继续阅读 >
202010-08 详解spring中aop不生效的几种解决办法 先看下这个问题的背景:假设有一个spring应用,开发人员希望自定义一个注解@Log,可以加到指定的方法上,实现自动记录日志(入参、出参、响应耗时这些)packagecom.cnblogs.yjmyzz.springbootdemo.aspect;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Retention(RetentionPolicy.RUNTIME)@Target(ElementTy... 继续阅读 >
202010-08 详解spring中aop不生效的几种解决办法 先看下这个问题的背景:假设有一个spring应用,开发人员希望自定义一个注解@Log,可以加到指定的方法上,实现自动记录日志(入参、出参、响应耗时这些)packagecom.cnblogs.yjmyzz.springbootdemo.aspect;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Retention(RetentionPolicy.RUNTIME)@Target(ElementTy... 继续阅读 >
202010-08 Spring Boot编写拦截器教程实例解析 创建一个类并使其实现接口HandlerInterceptor接口提供了一个请求的三个周期的拦截方法在controller之前,返回true则放行,false反之,handler包含处理请求的controller类以及其方法booleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)在controller接受请求之后,contorller渲染视图之前,如果发生异常就不执行了,可对ModelAndView操作voidpostHandle(HttpServletRequestrequest,HttpS... 继续阅读 >
202010-08 Spring IOC和DI实现原理及实例解析 什么是SpringSpring是一个以IoC和AOP为内核的框架。IoC(InversionofControl,控制反转)是Spring的基础。IoC简单说就是创建对象由以前的程序员调用new构造方法,变成了交由Spring创建对象。DI(DependencyInject,依赖注入)与IoC的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。简单地说,DI就是对象的属性,已经被注入好相关值了,直接使用即可。IoC-控制反转 把各个对象类封装之后,通过IoC容... 继续阅读 >
202010-08 Spring Framework常用面试题及答案汇总 1.什么是SpringFramework?SpringFramework是一个提供了完整性的编程或配置一个现代化的基于JAVA的企业应用,各种基础设施的支持。参见官方(https://spring.io/projects/spring-framework#overview):TheSpringFrameworkprovidesacomprehensiveprogrammingandconfigurationmodelformodernJava-basedenterpriseapplications-onanykindofdeploymentplatform.SpringmakesiteasytocreateJavaenterpri... 继续阅读 >
202010-08 Spring @Enable模块驱动原理及使用实例 Spring@Enable模块概览框架实现@Enable注解模块激活模块SpringFramework@EnableWebMvcWebMVC模块@EnableTransactionManagement事务管理模块@EnableCachingCaching模块@EnableMBeanExportJMX模块@EnableAsync异步处理模块@EnableWebFluxWebFlux模块... 继续阅读 >