![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
没有学不会的技术,只有不学习的人
自控力,坚持不懈
展开
-
Spring AOP学习5种通知
一、Spring的AOP分为以下5种类型通知①前置通知(Before):在连接点执行前执行该通知②正常返回通知(AfterReturning):在连接点正常执行完后执行该通知,若目标方法执行异常则不会执行该通知③异常返回通知(AfterThrowing):在连接点执行抛出异常时执行该通知④后置通知(after/finally):在连接点执行完成后(不管成功、失败、异常)都会执行该通知⑤环绕通知(Around):围绕在连接点前后二、执行顺序1、正常执行①环绕通知:@Around原创 2020-11-06 14:58:34 · 631 阅读 · 0 评论 -
Spring 常见的事务管理、事务的传播特性、隔离级别
事务管理事务:多个操作,要么同时成功,要么失败后一起回滚具备ACID四种特性Atomic(原子性) Consistency(一致性) lsolation(隔离性) Durablility(持久性)常见的Spring事务管理方式有那些编程式事务 代码调用beginTransaction()、commit()、rollback()等事务管理相关的方法,通过TransactionTempalte手动管理事务(很少用) 声明式事务管理(推荐) 通过AOP实现,可配置文件方式或注解原创 2020-10-05 12:25:44 · 110 阅读 · 0 评论 -
Spring AOP里面的通知Advice类型
@Before前置通知在执行目标方法之前运行@After后置通知在目标方法运行结束之后@AfterReturning返回通知在目标方法正常返回值后运行@AfterThrowing异常通知在目标方法出现异常后运行@Around环绕通知在目标方法完成前/后做增强处理,环绕通知是最重要的通知类型,像事务,日志等都是环绕通知,注意编程中核心是一个ProceedingjoinPoint,需要手动执行joinPoint.procced()...原创 2020-10-04 23:24:42 · 239 阅读 · 0 评论 -
Spring AOP面向切面概念
横切关注点对那些方法进行拦截,拦截后怎么处理,这些就叫横切关注点 比如:权限认证、日志、事务通知 Advice在特定的切入点上执行的增强处理,有5种通知 用途:记录日志、控制事务、提前编写好通用的模块,需要的地方直接调用连接点 JointPoint要用通知的地方,业务流程在运行过程中需要插入切面的具体位置 一般是方法的调用前后,全部方法都可以是连接点 只是概念,没啥特殊切入点 Pointcut不能全部方法都是连接点,通过特定的规则来筛选连接点,就是Pointcut,选中那几个你原创 2020-10-04 23:23:08 · 122 阅读 · 0 评论 -
Spring中的xml方式和注解方式不同之处的比较
Spring的xml和注解对比 常用注解bean定义#XML方式:<bean></bean> 注解方式:@Component 通用组件 @Controller(web层) @Service(service层) @Repository(dao层) bean取名XML方式:通过id或者name 注解方式:@Component("xxx")bean注入xml方式:通过<property> 注解方式:类型注入@Autowired名称注入@原创 2020-10-04 23:19:52 · 229 阅读 · 0 评论 -
Spring AOP里的静态代理和动态代理
什么是代理? 为某一个对象创建一个代理对象,程序不直接用原本的对象,而是由创建的代理对象来控制原对象,通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间什么是静态代理?由程序创建或特定工具自动生成源代码,在程序运行前,代理类的.class文件就已经存在 通过将目标类与代理类实现同一个接口,让代理类持有真实类对象,然后在代理类方法中调用真实类方法,在调用真实类方法的前后添加我们所需要的功能扩展代码来达到...原创 2020-10-04 23:13:36 · 155 阅读 · 0 评论 -
spring 中的IOC 操作 Bean 管理(bean 生命周期)
1、生命周期 (1)从对象创建到对象销毁的过程 2、bean 生命周期 (1)通过构造器创建 bean 实例(无参数构造) (2)为 bean 的属性设置值和对其他 bean 引用(调用 set 方法) (3)调用 bean 的初始化的方法(需要进行配置初始化的方法) (4)bean 可以使用了(对象获取到了) (5)当容器关闭时候,调用 bean 的销毁的方法(需要进行配置销毁的方法) 3、演示 bean 生命周期 package net.cybclass.sp.d原创 2020-10-04 19:39:23 · 383 阅读 · 0 评论 -
Spring里面xml文件中bean的依赖和继承
继承bean继承:两个类之间大多数的属性都相同,避免重复配置,通过bean标签的parent属性重用已有的Bean元素的配置信息 继承指的是配置信息的复用,和java类的继承没有关系video.java(父类)package net.cybclass.sp.domain;import java.util.List;import java.util.Map;/** * @author: wangxiaobo * @create: 2020-10-03 15:08 **/publ原创 2020-10-03 19:16:09 · 989 阅读 · 0 评论 -
Spring5.X的bean的scope作用域
scope属性singleton:单例,默认值,调用getBean方法返回是同一个对象,实例会被缓存起来,效率比较高,当一个bean被标识为singleton时候,spring的IOC容器中只会存在一个该bean prototype:多例,调用getBean方法创建不同的对象,会频繁的创建和销毁对象造成很大的开销 其他少用(作用于只在WebApplicationContext) request:每个Http请求都会创建一个新的bean session:每个Http Session请求都会创建一原创 2020-10-03 19:00:50 · 199 阅读 · 0 评论 -
Spring5.X在xml中常见的注入方式
List和Map注入package net.cybclass.sp.domain;import java.util.List;import java.util.Map;/** * @author: wangxiaobo * @create: 2020-10-03 15:08 **/public class Video {// public Video(int id, String title) {// S...原创 2020-10-03 17:59:56 · 212 阅读 · 0 评论 -
Spring DI(依赖注入)自动装配 @Autowired、@Resource注解
@Autowired:一部分功能是查找实例,从Spring容器中根据类型(Java类)获取对应的实例;另一部分功能就是赋值,将找到的实例,装配给另一个实例的属性值。(注:一个Java类型在同一个Spring容器中,只能有一个实例。) @Resource:一部分功能是查找实例,从Spring容器中根据Bean的名称(bean标签的名称)获取对应的实例;另一部分功能就是赋值,将找到的实例,装配给另一个实例的属性值。...原创 2020-10-03 17:00:40 · 165 阅读 · 0 评论 -
Spring(注解方式)简单入门
1.pom.xml<?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原创 2020-10-03 16:44:21 · 123 阅读 · 0 评论 -
报错:org/springframework/aop/TargetSource
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [applicationContext.xml]; nested exception is java.lang.NoClassDefFoundError:org/springframework/aop/TargetSource由于导包不齐而引原创 2020-10-03 16:36:15 · 1836 阅读 · 0 评论 -
报错:isScopedTarget(Ljava/lang/String;)Z
java.lang.NoSuchMethodError: org.springframework.aop.scope.ScopedProxyUtils.isScopedTarget(Ljava/lang/String;)Z解决方案:1、查看是否导入spring-aop的相关jar包;2、替换版本更高的spring-aop的jar包。原创 2020-10-03 16:30:25 · 493 阅读 · 0 评论 -
Spring(XML方式)简单入门
1.pom.xml<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.2.5.RELEASE</version> </d原创 2020-10-03 15:48:53 · 188 阅读 · 0 评论 -
IDEA+Maven+Spring5.X项目创建
1.添加依赖 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.2.5.RELEASE</version> </dep原创 2020-10-03 15:25:04 · 407 阅读 · 0 评论 -
InitializingBean接口
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。@Slf4j@Servicepublic class QuartzServiceImpl implements QuartzService, InitializingBean { private AtomicInteger atomicInteger; @Autowired private Qu..原创 2020-09-06 17:27:26 · 523 阅读 · 0 评论 -
Spring整合Quartz实现一个简单的定时任务
在我们进行软件项目开发的过程中,相信大家在很多时候都会遇到如下业务场景:每天、每周或每月生成相应的业务报表;每天统计系统注册人数;定期清理平台长久不登录的用户等等。遇到这种业务场景需要怎样去处理?人为定时去数据库操作来统计?别开玩笑了,这种事情哪用得着人来做,如果像这种任务还需要专人每天都去做统计,那估计很多人就要疯掉了。针对于这种业务情况,采用定时任务是个非常不错的选择。在Java领域中,定时任务的开源工具也非常多,小到一个Timer类,大到Quartz框架。总体来说,个人比较喜欢的还是Q...原创 2020-09-04 15:29:47 · 172 阅读 · 0 评论 -
Spring 中的属性注入
1.普通的属性注入由于 Spring Boot 源自 Spring ,所以 Spring 中存在的属性注入,在 Spring Boot 中一样也存在。由于 Spring Boot 中,默认会自动加载 application.properties 文件,所以简单的属性注入可以直接在这个配置文件中写。例如,现在定义一个 Book 类:然后,在 application.propertie...原创 2020-02-19 16:47:04 · 213 阅读 · 0 评论