Spring框架重要知识点总结(三)

Java SSM 框架知识点总结 一、Spring面试题 1、Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成。 两大核心:1、IOC/DI(控制反转/依赖注入) :把dao依赖注入到service层,service层反转给action层,Spring顶层容器为BeanFactory。2、AOP:面向切面编程 2、Spring的事务? 编程式事务管理:编程方式... 阅读详情

一、AOP是什么?

1、AOP(面向切面编程),它是利用对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
2、AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视、事务管理、安全检查、缓存)

二、为什么要学习AOP?

因为可以在运行期间,不修改源代码的情况下对已有的方法进行增强。

三、AOP的优势是什么?

  1. 减少重复的代码 2. 提供开发的效率 3. 维护方便

四、AOP的底层原理

JDK的动态代理技术(主要)

1、为接口创建代理类的字节码文件
2、使用ClassLoader将字节码文件加载到JVM
3、创建代理类实例对象,执行对象的目标方法

cglib代理技术

五、AOP相关的术语

Joinpoint(连接点) 所谓连接点是指那些被拦截到的点。在spring中指的是所有方法,因为spring只支持方法类型的连接点。

Pointcut(切入点) – (编写切入点表达式),程序增强的入口。

Advice(通知/增强)–对spring中方法要进行增强,编写事务管理相关代码。

Target(目标对象)– 代理的目标对象

Weaving(织入)– 是指把增强应用到目标对象来创建新的代理对象的过程

Proxy(代理)– 一个类被AOP织入增强后,就产生一个结果代理类

Aspect(切面) = 切入点 + 通知

六、入门案例

(一)首先简单说下步骤

①引入新的坐标AOP、Spring-aspects、aspect; ②配置文件引入具体的AOP约束; ③编写包结构,编写具体的接口和实现类; ④将目标类注入; ⑤定义切面类; ⑥在配置文件中注入切面类; ⑦完成AOP配置; ⑧测试

(二)具体实施

①引入新的坐标AOP、Spring-aspects、aspect;

    <dependency>
        <groupId>aopalliance</groupId>
        <artifactId>aopalliance</artifactId>
        <version>1.0</version>
    </dependency>
    <!-- Spring Aspects -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>5.0.2.RELEASE</version>
    </dependency>
    <!-- aspectj -->
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.8.3</version>
    </dependency>

②配置文件引入具体的AOP约束;

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
                http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans.xsd
                http://www.springframework.org/schema/context
                http://www.springframework.org/schema/context/spring-context.xsd
                http://www.springframework.org/schema/aop
                http://www.springframework.org/schema/aop/spring-aop.xsd">

③编写包结构,编写具体的接口和实现类;

接口:
package demo3;
public interface UserService {
    public void save();
}
实现类:
package demo3;
public class UserServiceImpl implements UserService {
    public void save() {
        System.out.println("业务层:保护用户...");
    }
}

④将目标类注入;

<bean id="userService2" class="demo3.UserServiceImpl">

⑤定义切面类;

package demo3;
/*
* 自定义切面类 = 切入点(表达式) + 通知(增强的代码)
* */
public class MyXmlAspect {
    /*通知*/
    public void log(){
        System.out.println("增强的方法执行了......");
    }
}

⑥在配置文件中注入切面类;

<bean id="myXmlAspect" class="demo3.MyXmlAspect"/>

⑦完成AOP配置;

<!--
             切入点的表达式:
                   execution() 固定的写法
                   public          是可以省略不写的
                   方法的返回值      int String 通用的写法,可以编写 * 不能省略不写的
                   包名+类名        不能省略不写的,编写 *  UserServiceImpl AccountServiceImpl
                   方法名称         save() 可以写 *
                   参数列表         (..) 表示任意类型和个数的参数
                   比较通用的表达式:execution(public * cn.tx.*.*ServiceImpl.*(..))
            -->

<aop:config>
            <!--配置切面 = 切入点 + 通知组成-->
            <aop:aspect ref="myXmlAspect">
                <!--前置通知-->
                <aop:before method="log" pointcut="execution(public * demo3.UserServiceImpl.save(..)))"/>
            </aop:aspect>
</aop:config>

⑧编写测试类进行测试

//运行单元测试  切记需要单元测试环境  导入spring-test
@RunWith(SpringJUnit4ClassRunner.class)
//加载类路径下的配置文件
@ContextConfiguration("classpath:applicationContext4.xml")
public class demo4 {
    //按照类型自动导入
    @Autowired
    private UserService userService;

    /*测试*/
    @Test
    public void run(){
        userService.save();
    }
}
(三)AOP的通知类型
<!--
                AOP的通知类型
                    前置通知:目标方法执行前,进行增强。
                        <aop:before method="log" pointcut="execution(* cn.tx.*.*ServiceImpl.save*(..))" />
                    最终通知:目标方法执行成功或者失败,进行增强。
                        <aop:after method="log" pointcut="execution(* cn.tx.*.*ServiceImpl.save*(..))" />
                    后置通知:目标方法执行成功后,进行增强。
                        <aop:after-returning method="log" pointcut="execution(* cn.tx.*.*ServiceImpl.save*(..))" />
                    异常通知:目标方法执行失败后,进行增强。
                        <aop:after-throwing method="log" pointcut="execution(* cn.tx.*.*ServiceImpl.save*(..))" />
                    环绕通知:目标方法执行前后,都可以进行增强。目标对象的方法需要手动执行。
            -->

七、Spring的AOP技术-注解方式

在上面基础上
1、给切面类添加注解 @Aspect,编写增强的方法,使用通知类型注解声明

@Component  // 把该类交给IOC去管理
@Aspect     // 声明是切面类  == <aop:aspect ref="myXmlAspect">
public class MyXmlAspect {

    /*通知*/
    // @Before(value = "切入点的表达式")
    @Before(value = "execution(public * demo3.UserServiceImpl.save(..))")
    public void log(){

        System.out.println("增强的方法执行了......");
    }
}

2、配置文件中开启自动代理

<!--开启注解扫描-->
        <context:component-scan base-package="demo3"/>

        <!--开启自动代理--> c
        <aop:aspectj-autoproxy/

八、Spring的AOP技术-纯注解方式

通知类型注解
@Before – 前置通知
@AfterReturing – 后置通知
@Around – 环绕通知(目标对象方法默认不执行的,需要手动执行)
@After – 最终通知
@AfterThrowing – 异常抛出通知

编写配置类

@Configuration      // 配置类
@ComponentScan(value = "cn.tx.demo3")   // 扫描包
@EnableAspectJAutoProxy     // 开启自动代理 == <aop:aspectj-autoproxy />
public class SpringConfig {
    
}

Spring框架重要知识点总结(四).

跨阻放大器(TIA)的输入输出阻抗的定义、分析和影响因素 跨阻放大器(Transimpedance Amplifier,简称TIA)是一种常用于将电流信号转换为电压信号的放大器。在TIA电路中,输入阻抗是指输入端对电流信号的响应能力,输出阻抗是指输出端对负载电阻的驱动能力。本文将分别介绍TIA的输入和输出阻抗的定义、分析以及影响因素。 阅读详情

相关推荐

MyBatis示例

MyBatis示例 基本示例 环境准备 jdk : 1.8.0 MyEclipse MySQL MyBatis-3.4.6.jar 新建JavaWeb Project 命名:mybatis 导入JAR包或添加POM.xml中添加依赖 MyBatis_config.xml &amp;amp;amp;amp;amp;lt;?xml version=&amp;amp;amp;amp;quot;1.0&amp;amp;amp;amp;quot; encoding=&a

走在命运的左岸 721

Spring Retry-00-使用和原理

spring retry提供了一种声明式方法重试的功能,能够在指定场景下重新执行方法,这种能力在方法失败是由于网络或其他非逻辑错误的场景下非常有用。通过注解就完成功能,这种方式在Spring中是非常常见的,其原理就是使用动态代理来实现增强。当然,既然是使用了AOP那么你可以选择使用spring-aop,或者使用spring-aspects2中AOP中的任意一种。下面是spring-retry和spring-aspects和spring-aop的maven坐标,aop的依赖根据实际情况选择一个或2个即可。

诗人不写诗 577

5分钟搞懂基因组规模代谢网络(GSMM):从数据库选择到模型构建全流程

本文详细解析基因组规模代谢网络(GSMM)构建的全流程,从数据库选择到模型优化。重点介绍MetaCyc、BiGG等主流数据库的黄金三角评估法则,对比自上而下与自下而上两种建模方法,并提供模型修剪、仿真优化的实用技巧与避坑指南,帮助研究者高效构建精准代谢网络模型。

weixin_30872157的博客 137

【Spring学习笔记(十一)】基于注解的SpringAop配置

首先我们要配置好我们Maven项目中的pom.xml文件,这里主要是导入Spring和aspectj两个坐标。 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/...

qq_43097201的博客 236

Revit Dynamo实战:用Excel数据批量生成桥梁模型(附自适应族技巧)

本文详细介绍了如何利用Revit Dynamo结合Excel数据实现桥梁参数化建模,重点讲解了数据驱动建模、自适应族优化及大型项目性能管理三大核心技巧。通过结构化Excel数据、高级自适应族创建和分块处理策略,显著提升桥梁建模效率与设计变更响应能力。

weixin_42520025的博客 387

企业级智能问数开发的核心痛点与技术聚焦

本文介绍了企业级智能问数系统开发的三大核心问题和解决方案:语义解析不精准、SQL生成不健壮、企业适配难落地。文章从开发者视角出发,详细拆解了NLU语义解析、SQL生成、对话记忆、企业级适配四大核心模块的技术实现。 在技术选型方面,推荐了LangChain+DeepSeek-R1、FAISS/Milvus、SQLAlchemy等工具链组合。针对企业级需求,重点讲解了: 语义解析模块的意图识别优化和要素提取技术 SQL生成模块的语法校验与性能优化方案 对话记忆模块的Redis存储实现 企业级适配的三层防护体系和

lamehsl的专栏 1047

Spring开发基本坐标

Spring开发基本坐标 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.5.RELEASE</version> </dependency> <dependency> <g

kimyundung的博客 3095

一网打尽身份验证与授权:深入剖析ASP.NET Core Identity在C#中的全方位实战应用

ASP.NET Core Identity 是 Microsoft 提供的一个强大且可扩展的身份验证和授权框架,用于构建基于用户账户、角色和权限的Web应用程序。它提供了用户注册、登录、密码管理、多因素认证、角色分配、授权等功能,与ASP.NET Core框架深度集成,简化了安全相关的开发工作。通过上述代码示例和注释,展示了如何安装配置Identity、自定义用户实体与数据库上下文、实现用户注册登录、管理角色与用户角色关系,以及如何使用授权策略保护应用程序资源。,并指定用户和角色类型以及主键类型。

java专栏 1528

AspectJ 在spring项目中的maven配置

<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.org

David宫洪深的博客 3万+

2023年全国青少年信息素养大赛C++编程初中组决赛真题+答案解析

2023年全国青少年信息素养大赛C++编程初中组决赛真题+答案解析

伶俐角少儿编程 819

python+playwright 学习-10.pytest-playwright插件编写测试用例

pytest-playwright插件完美的继承了pytest 用例框架和playwright基础使用的封装,基本能满足工作中的常规需求了,不需要我们再做额外的插件开发。

qq_27371025的博客 2516

spring源码项目使用spring-aspects

** spring源码项目使用spring-aspects ** 1.spring源码编译好了,需要在spring下自己建个模块来验证是否可用 建好的模块 2.导入spring-aspects 我们先看看导入spring-aspects 这个包,然后编写切面代码,测试会报错,原因是spring-aspects模块依赖了aspectJ 3.下载AspectJ编译器 去AspectJ官网下载AspectJ编译器,下载aspectj1.9.5的。 链接地址: https://www.eclipse.o

gsy159369的博客 7083

Python与ArcGIS系列(二)获取地图文档

在ArcPy中,要引用当前的地图文档(Map Document),可以使用 mapping 模块中的 MapDocument 类。值得注意的是,在arcgis内部python窗口运行该代码才能访问已加载进arcgis的文档,如果通过其他idle则无法访问。要引用磁盘上的地图文档并对其进行一些设置,同样可以使用ArcPy中的 mapping 模块和 MapDocument 类。对于我们平常的工作,接触最多的就是图层数据处理,获取图层后就可以方便地进行下一步处理。

weixin_43894929的博客 2200

SpringMVC、Spring、 Mybatis三大框架知识点总结

一、Spring 1.1 概述 Spring是分层的Java SE/EE应用轻量级开源框架,以IOC(Inverse Of Control:控制反转)和AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还可以整合众多第三方框架。 1.2 IOC 我们平时开发中如果创建对象需要去new 一个对象,这个动作是我们主动去创建的。 Spring中的IOC就是去帮我们

hl404的博客 2285

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Spring框架知识点(三)

目录: 1.基于aspectj的注解aop操作(会用) 2.Spring的jdbcTemplate(模板)操作 (1)实现crud操作 3.Spring配置连接池 (1)配置c3p0连接池 (2)service和dao注入操作 4.Spring事务管理 (1)事务概念 (2)Spring进行事务管理api (3)Spring进行事务配置(声明式) — 基于xml配置文件 — 基于注解方式 基于as...

gaofengyan的博客 261

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JAVA知识点(三):Spring与ORM框架

Spring IOC容器主要有继承体系底层的BeanFactory、高层的ApplicationContext和WebApplicationContextBean有自己的生命周期。

longzhutengyue的博客 760

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java ee ssh三大框架知识点_详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)...

详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate)发布时间:2020-09-17 13:34:05来源:脚本之家阅读:64作者:kent鹏一、整合原理二、导包(41个)1.hibernate(1)hibernate/lib/required(2)hibernate/lib/jpa | java persist api java的持久化规范(接口)(3)数据库...

weixin_35747785的博客 435

SSH——struts2、spring、hibernate三大框架的纯配置式的整合?

一、SSH三个框架的知识点: 1、Hibernate框架:    1.1、Hibernate的核心配置文件: 数据库信息、连接池配置、 Hibernate信息、映射配置(实体类和数据库表映射关系:使用的是ORM思想)、Hibernate核心配置文件。   1.2、hibernate操作的步骤:在Spring框架对hibernate框架进行封装,使用HibernateTemplate类。 2...

qq_42246139的博客 312

框架源码知识点(spring)二

spring 知识点

willard_z的博客 842

SSH三个框架的知识点汇总

SSH三个框架的知识点 一、Hibernate框架 1. Hibernate的核心配置文件     1.1 数据库信息、连接池配置     1.2 Hibernate信息     1.3 映射配置     1.4 Hibernate核心配置文件 如果单纯使用Hibernate框架,核心配置文件名称hibernate.cfg.xml并且一定要放在src下面,而hibernate和spr

普羅●米修斯 ——— HelloWorld 1万+

【转载】SSh三大框架常考面试题

SSh三大框架常考面试题 转载于:https://www.cnblogs.com/dmzxxmeng/p/10638409.html

abs27581的博客 140

SSH三大框架的整合

SSH三个框架的知识点 一、Hibernate框架 1. Hibernate的核心配置文件     1.1 数据库信息、连接池配置     1.2 Hibernate信息     1.3 映射配置     1.4 Hibernate核心配置文件 如果单纯使用Hibernate框架,核心配置文件名称hibernate.cfg.xml并且一定要放在sr

wenbsu的博客 243

SSH三个框架

SSH三个框架的知识点 一、Hibernate框架 1. Hibernate的核心配置文件     1.1 数据库信息、连接池配置     1.2 Hibernate信息     1.3 映射配置     1.4 Hibernate核心配置文件 如果单纯使用Hibernate框架,核心配置文件名称hibernate.cfg.xml并且一定要放在src下面,

qq_19272431的博客 905

ssh框架整合

SSH三个框架的知识点 一、Hibernate框架 1. Hibernate的核心配置文件     1.1 数据库信息、连接池配置     1.2 Hibernate信息     1.3 映射配置     1.4 Hibernate核心配置文件 如果单纯使用Hibernate框架,核心配置文件名称hibernate.cfg.xml并且一定要放在

叶雨声烦 774

SSH框架整合开发(struts2 spring hibernate 三大框架知识总结)

今天总结一下前些时间学习的SSH三大框架的整合开发 首先先简单回顾一下SSH整合开发的知识点 SSH即struts2  hibernate spring  struts2框架 主要的内容是三个:Action 值栈 拦截器 一 Action操作 (1)首先要知道action创建的三种方式 1)继承 ActionSupport类(最常用) 2)实现 Action 接口 3)不

Augusese的博客 962

spring,hibernate,struts2三大框架的整合秘籍

ssh三大框架的整合: 1.web.xml文件: 使用上下文参数指定spring配置文件的位置 contextConfigLocation classpath:applicationContext*.xml 配置spring框架的监听器 org.springframework.web.context.ContextLoaderListener 配置过滤器,sp

yzl127的博客 278
上一篇: Spring框架重要知识点总结(二)
下一篇: Spring框架重要知识点总结(四)
智汇风渔AI小白
博客等级 码龄7年 1万+粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇风渔AI小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值