![](https://img-blog.csdnimg.cn/20210529104235140.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring生态
文章平均质量分 77
Spring生态
波波老师
初心易得,始终难守!愿成长的路上不忘初心!
展开
-
Spring与微服务教程合集
Spring Cloud教程 第一弹 Eureka服务注册中心Spring Cloud教程 第二弹 客户端负载均衡RibbonSpring Cloud教程 第三弹 Ribbon工作原理Spring Cloud教程 第四弹 Hystrix熔断器Spring Cloud教程 第五弹 Hystrix底层原理基础篇Spring Cloud教程 第六弹 Hystrix底层原理核心篇Spring Cloud教程 第七弹 spring cloud openfeignSpring Cloud教程 第八弹 Feign源码解读原创 2020-11-03 10:01:22 · 1115 阅读 · 2 评论 -
Spring Boot集成WebSocket Demo,简单明了
如果是初次搭建Spring Boot+WebSocket项目,不需要太复杂,只需要快速上手,那么你搜到的大部分文章可能都不适合你,我的这篇文章以最精简的方式搭建一个可以运行并通信的Spring Boot+WebSocket的Demo项目,有了根基之后再进行复杂化就不是难事了。原创 2023-06-08 16:17:24 · 2179 阅读 · 1 评论 -
Spring Security认证授权练手小项目 腾讯视频VIP权限管理功能
主框架为Spring Boot+Spring Security+Mybatis+Spring Session。关系型数据库采用Mysql。使用Redis主要存储分布式Session数据。使用kaptcha生成图形验证码。另外使用了lombok、fastjson、hutool等工具。通过mybatis-generator自动生成数据库映射文件。前端主要使用html+jquery框架,请求使用jquery ajax。原创 2022-12-31 21:39:02 · 993 阅读 · 0 评论 -
Spring Boot三种跨域解决方案与Spring Security跨域解决方案
JavaWeb跨域问题及解决方案,另外我下面会做补充。很多人误认为资源跨域时无法请求,实际上,通常情况下请求是可以正常发起的(注意,部分浏览器存在特例),后端也正常进行了处理,只是在返回时被浏览器拦截,导致响应内容不可使用。此外,我们平常所说的跨域实际上都是在讨论浏览器行为。CORS(Cross-Origin Resource Sharing)的规范中有一组新增的HTTP首部字段,允许服务器声明其提供的资源允许哪些站点跨域使用。原创 2022-12-29 10:12:23 · 2794 阅读 · 3 评论 -
分布式session解决方案 Spring Session与Spring MVC(HttpSession)集成实战
在上一篇文章中,介绍了Java Web的基础知识,以及Spring MVC父子容器初始化过程,有兴趣的读者可以阅读一下,一是作为本文的铺垫,二是本文所用到的项目也可以从上一篇文章获取到。本文由上一篇文章引申出来,我们知道Java Web有个Session的概念,是存在于服务端的一块内存,但如今服务都是集群部署,如何解决集群多个节点间session不共享的问题呢?session共享这种方案实用得多,也是现在最常用的方案。原创 2022-12-28 16:40:28 · 1925 阅读 · 6 评论 -
深入底层,spring mvc父子容器初始化过程解析
以下是对各个组件主要职责的总结:根据RootConfig创建了一个上下文:RootApplicationContext向ServletContext注册了ContextLoaderListener,传入了RootApplicationContext根据ServletConfig创建了一个上下文:ServletApplicationContext向ServletContext注册了DispatcherServlet,传入了ServletApplicationContext。原创 2022-12-20 18:35:06 · 1744 阅读 · 0 评论 -
Spring Boot集成quartz任务调度框架开发实战 集群模式 Job注入Spring容器
本文主要围绕quartz框架展开介绍。quartz是一个开源的Java调度框架,功能十分丰富。quartz可以用来创建简单或复杂的调度,以执行数十个、数百个甚至数万个任务。那么什么是任务调度?任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务。如果老板给你一个需求,让你实现邮件推送的任务调度,你会考虑使用哪些技术实现呢?是JDK自带的Timer、JDK1.5推出的ScheduledExecutor,还是Spring框架提供的定时任务,亦或是本文介绍的quartz呢?在做技术选型之前,先对这原创 2022-09-03 19:30:50 · 2395 阅读 · 3 评论 -
基于servlet3.0搭建spring mvc应用 无web.xml 无spring boot
还记得我刚学Java Web的时候,是17年,那时候servlet和jsp还在延续它的辉煌,ssh和ssm仍然是企业潮流,开发工具还是eclipse,有时候一个Tomcat字符集乱码的问题都要解决很久,老师教我们从servlet,到jsp,再到ssh和ssm,可是学到最后,即使我们的项目能跑了,可再让我们手工搭一遍,根本就摸不着头脑,因为配置太多了,我们搞不清楚原理,搞不清楚为什么要这么配置,自然也就记不住。原创 2022-11-09 14:09:06 · 1433 阅读 · 0 评论 -
Spring基于注解配置的AnnotationConfigApplicationContext源码分析
启动AnnotationConfigApplicationContext的main方法如下代码所示。AnnotationConfigApplicationContext的构造器参数如下图所示。这里我们用的是第二个构造器。点进去,如下代码所示。为了整个源码分析的过程有层次感,我将上面三行代码分三个标题去叙述。原创 2022-10-10 08:30:00 · 666 阅读 · 0 评论 -
教科书级别 IDEA中用Maven手工搭建Spring Boot项目
相信大多数读者在用IDEA搭建Spring Boot项目的时候,都喜欢用Spring Initializr,如下图所示。利用spring官方提供的网站https://start.spring.io,我们可以很方便地勾选我们想要引入的依赖,从而快速搭建一个Spring Boot项目。原创 2022-08-24 11:45:31 · 425 阅读 · 0 评论 -
利用Spring AOP切面结合反射机制实现业务层参数校验
1、自定义注解package com.bobo.springboottest.aspect;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target({ElementType.METHOD,ElementType.PARAME原创 2022-02-19 11:54:44 · 420 阅读 · 0 评论 -
UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
导致这个异常的原因是:在使用Spring事务的过程中,A方法调用B方法,A B方法都操作了数据库,B方法由于抛出异常需要回滚,而A方法没有抛出异常所以要执行提交,而Spring默认的事务传播行为是Propagation.REQUIRED,即A B方法处于同一个事务中,一个要回滚一个要提交,这样就导致了冲突。导致异常的代码样例如下:@Servicepublic class StudentServiceImpl implements IStudentService{ private Studen原创 2022-02-19 11:14:51 · 1199 阅读 · 1 评论 -
Spring AOP核心源码分析之不搞清楚这些别说你会Spring AOP
文章目录1、Spring AOP概述2、Spring AOP术语3、增强器的一种:IntroductionAdvisor4、Spring AOP API1、使用编程的方式基于AspectJ创建代理2、顶层接口3、拦截和通知接口4、使用编程的方式创建代理5、自动代理(auto-proxy)5、Spring AOP底层原理-动态代理1、JDK动态代理2、Cglib动态代理6、如何查看动态生成的代理类源码?本文标题1-5会用到标题6的知识:关于如何查看动态生成的代理类的源码的相关介绍,有兴趣可以看一下短视频!原创 2022-02-04 16:06:04 · 783 阅读 · 0 评论 -
Spring事务源码分析之事务方法是如何被AOP代理拦截到的?
文章目录1、spring声明式事务概述2、本地事务源码之事务方法是如何被AOP代理拦截到的?1、现象(单数据源多DB)2、如何生成AOP代理类1、如何获取该bean的Interceptors?2、如何创建代理对象?3、执行目标方法时被CglibAopProxy拦截4、总结1、spring声明式事务概述事务管理对于企业应用来说是至关重要的,当出现异常情况时,它可以保证数据的一致性。spring支持编程式事务管理和声明式事务管理两种方式。首先我们来看看spring框架的事物抽象。Spring的事务策略由T原创 2022-02-02 21:17:41 · 1725 阅读 · 0 评论 -
Spring IOC容器启动流程与Bean生命周期源码分析
文章目录1、IOC容器启动与Bean生命周期源码分析1、new ClassPathXmlApplicationContext初始化过程1、Super(parent)2、setConfigLocations(configLocations)3、refresh()1、prepareRefresh2、obtainFreshBeanFactory1、加载bean声明的一系列过程2、注册bean声明3、prepareBeanFactory4、postProcessBeanFactory2、 ApplicationCo原创 2022-01-28 17:03:46 · 1932 阅读 · 4 评论 -
Spring @Cacheable当返回值为null时报错解决方案
如下面代码所示,@Cacheable注解的unless属性已经为我们提供好了解决方案。unless = "#result == null" 的意思就是,当返回值为null时,就不缓存@Cacheable(cacheNames = {"single_book"},key = "#root.targetClass+'.'+#root.methodName+'.'+#p0", unless = "#result == null") public Book getBook(原创 2021-01-02 19:37:41 · 6098 阅读 · 0 评论 -
带你读懂@EnableCaching的源码
1、什么是spring的缓存抽象?众所周知,spring为了方便缓存的使用,提供了一层缓存抽象,而譬如ehcache、redis等第三方缓存框架,spring则为它们提供了实现。spring的缓存抽象主要依靠org.springframework.cache.Cache接口和org.springframework.cache.CacheManager接口。对于不同的缓存框架,对应不同的CacheManager实现。举个例子,这里暂时不谈ehcache和redis(二者都是成熟的缓存框架),只谈原创 2020-12-07 11:34:40 · 1162 阅读 · 2 评论 -
Spring中@Import注解的作用
类注释比较清楚地说明了@Import注解的作用,这里我翻译一下。声明一个或多个Component提供等同于spring的xml配置中<import/>元素的功能,允许导入@Configuration类、ImportSelector的实现和ImportBeanDefinitionRegistrar的实现,当然也可以导入一个常规的类作为Component(类似于4.2版本后,利用AnnotationConfigApplicationContext类的register方法导入一个普通的类作为Compone原创 2020-12-03 13:13:39 · 1339 阅读 · 0 评论 -
spring @Configuration注解的proxyBeanMethods属性
写在前面的话或许大家都知道@Configuration注解与@Component注解的区别,@Component注解用来定义一个Bean,而@Configuration与@Bean注解结合,可以在一个类中定义多个Bean最近我发现@Configuration注解有一个属性proxyBeanMethods,很想知道这个属性的作用,所以就研究了一下1、@Configuration注解的原理首先来看一下@Configuration注解的源码:package org.springf...原创 2020-11-07 14:13:40 · 3954 阅读 · 5 评论 -
Spring Security教程 第二弹 spring security核心源码分析
1、Spring Security如何灵活集成多种认证技术?首先是javax.security.auth.Subject类,而一个Subject类包含多个javax.security.Principal类Principal类源码:public interface Principal { public boolean equals(Object another); public String toString(); public int hashCode(); p...原创 2020-10-24 21:14:40 · 620 阅读 · 0 评论 -
Spring Security教程 第一弹 初识spring security
1、概述核心概念:认证 授权:Spring Security不仅支持基于URL对Web的请求授权,还支持方法访问授权、对象访问 授权等Spring Security已经集成的认证技术如下:HTTP BASIC authentication headers:一个基于IETF RFC的标准 HTTP Digest authentication headers:一个基于IETF RFC的标准 HTTP X.509 client certificate exchange:一个基于IETF RF原创 2020-10-20 18:52:52 · 938 阅读 · 0 评论 -
浅谈Spring事件的使用
1、自定义事件1.1、为什么要使用自定义事件为了业务解耦首先要了解几个概念事件源:事件的触发者,发布事件(一般是广播) 事件 事件监听器:用于消费事件比如一个注册业务,可能包含三个动作:注册、发送邮件提醒用户注册成功、发送优惠券,如果将这三个动作放在一个方法里执行,那耦合度就很大,如果发送邮件或发送优惠券等次要业务失败,会导致注册也跟着失败,这显然是灾难性的如果利用事件机制,可以把用户注册当成一个事件,而发送邮件和发送优惠券当成两个监听器,用来监听用户注册事件,则可以避免以上问题原创 2020-08-02 19:38:54 · 443 阅读 · 0 评论 -
springboot整合druid
1、引入依赖<!--<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency>--> <depe原创 2020-08-02 15:52:32 · 664 阅读 · 0 评论 -
springmvc参数校验
说明:使用SpringMVC时配合hibernate-validate进行参数的合法性校验,能节省一定的代码量1、引入依赖<dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.7.Final</version>&.原创 2020-06-08 17:23:53 · 597 阅读 · 0 评论 -
搭建springboot admin
1、搭建springboot admin server1.1、pom文件<properties> <!--和springboot-parent版本对应,否则启动报错--> <spring-boot-admin.version>2.0.0</spring-boot-admin.version></properties><dependencies> <!-- 该依赖.原创 2020-05-25 10:22:03 · 476 阅读 · 2 评论 -
浅谈Spring Data JPA的使用
1、jpa、spring data jpa、hibernate、spring data jdbc之间的关系jpa是java提供持久化的一套规范,一套接口,而接口是需要实现才能工作的,而Hibernate就是实现了这套规范的orm框架spirng data jpa是spring提供的一套简化JPA开发的框架,按照约定好的【方法命名规则】写dao层接口,就可以在不写接口实现的情况下,实现对数据...原创 2019-11-07 17:05:34 · 338 阅读 · 0 评论 -
spring属性配置PropertySource、@Value、Environment、@ConfigurationProperties的用法
1、自定义配置文件common-as-dev.propertiesstu.name=zhangsanstu.age=18stu.sex=man2、pom里配置环境<profile> <id>as-dev</id> <properties> <port>8081</port> &l...原创 2019-08-15 17:57:04 · 5790 阅读 · 0 评论 -
springboot整合swagger2
1、swagger2配置类import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import springfox.documentation.builders.ApiInfoBuilder;import springf...原创 2019-08-09 15:01:47 · 304 阅读 · 0 评论 -
springboot整合cxf
代码结构配置类import javax.xml.ws.Endpoint;import org.apache.cxf.Bus;import org.apache.cxf.jaxws.EndpointImpl;import org.springframework.beans.factory.annotation.Autowired;import org.springfram...原创 2019-07-01 17:15:52 · 2240 阅读 · 1 评论 -
SpringBoot项目多环境及Jar包部署运维知识总结
1、src/main/resources文件夹结构2、如何打包src/main/resources和src/main/webapp<resource> <directory>src/main/resources</directory> <includes> &...原创 2019-06-25 18:08:35 · 828 阅读 · 0 评论 -
springboot项目打包webapp、resources和自定义文件夹
1、打包webapp和resources<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <includ...原创 2019-06-21 18:23:44 · 7533 阅读 · 1 评论 -
详解ssm框架事务管理
毫无疑问ssm框架是现在企业最流行的一套框架,而在实际开发中事务管理的作用不可或缺,什么是事务?举一个简单的例子,张三转账100块钱给李四,在这个转账过程中,实际上分为两步,第一步是张三的账户减去100块钱,第二步是李四的账户增加100块钱,那么这两步就是一个事务,要么都成功,要么都失败,不能张三的账户少了100块钱而李四的账户没有加上100块钱。既然说到事务管理,相信大家对事务的概念和ssm...原创 2018-10-07 23:28:33 · 4634 阅读 · 3 评论 -
shiro+ssm详细整合教程
在进行下面的步骤之前,您必须先拥有一个maven管理的ssm项目。原创 2018-10-18 16:31:59 · 4162 阅读 · 6 评论 -
基于springmvc实现头像上传、预览
在做javaweb项目时,有时偶尔会用到用户头像上传和预览功能,百度了很多资料,发现学习成本比较高,要么是理解起来有点困难,必须加以深入研究才能吃透,但花费时间花费精力。要么是效果不尽人意。因此本人花了一些时间从前台到后台都是自己手写的,希望大家能满意!头像上传即文件上传采用springmvc文件上传方案来解决,头像上传通常也需要预览功能,预览功能则通过js代码实现。前端页面html代码:...原创 2018-09-25 14:07:37 · 3662 阅读 · 3 评论 -
springboot配置过滤器、拦截器
配置类import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.sp...原创 2019-08-30 17:22:59 · 590 阅读 · 0 评论 -
org.springframework.core.io.ClassPathResource读取文件
//假设有src/main/resources/xmlTemplate/data.xml,那filePath写法为xmlTemplate/data.xml//程序打jar包后,一般的读取方式不可取,因为文件是在jar包中,无法对应文件系统上的路径,但ClassPathResource类可以public static String classpathXmlToStr(String filePa...原创 2019-08-16 14:41:18 · 3788 阅读 · 0 评论