Spring框架IOC及AOP概述

2 篇文章 0 订阅
订阅专栏

IOC

什么是IOC

        1.控制反转,把创建对象和对象之间的调动过程交给spring进行管理

        2.使用IOC的目的是为了降低代码耦合度

        3.IOC思想基于IOC容器完成,IOC容器底层就是对象工厂

IOC底层原理:XML文件解析  工厂模式  反射

spring提供IOC容器实现的两种方式  (两个接口)

  1. BeanFactory:IOC容器基本实现,是Spring内部的接口,不提供给开发人员使用

加载配置文件时不会创建对象,在获取对象(使用)才会创建对象

  1. ApplicationContext:BeanFactory的子接口,提供更多更强大的功能,一般由开饭人员进行使用,主要使用两个实现类(加载配置文件的时候会直接创建对象,把占资源耗时的任务交给服务器完成
  1. FileSystemXmlApplicationContext: 调用时参数要写xml配置文件的绝对路径,例如:C : ..\..
  2. ClassPathXmlApplicationContext:调用时参数要写类路径,在src下直接写文件名就可以

Bean管理

概念:Bean管理指的是Spring创建对象,Spring注入属性两个操作

FactotyBean(工厂bean)

Spring 有两种类型的bean,一种是普通bean,一种是Factorybean(工厂bean),普通bean在配置文件中定义的bean类型就是返回对象的类型,但是在工厂bean中,配置文件中定义的bean类型,可以和返回的类型不一样

第一步:创建类,让这个类作为工厂bean,让他实现类接口FactoryBean

第二步:实现接口里面的方法,在方法中定义返回的bean类型

Bean对象作用域和生命周期

       作用域:通过设置bean标签的scope属性控制创建spring对象是单实例还是多实例,singleton是单实例prototype是多实例

       bean生命周期:  如果算上后置处理器一共七步

  1. 通过构造器创建bean实例
  2. 为bean的属性设置值和对其他对象引用(调用set方法)

(把bean的实例传递给后置处理器的postProcessBeforInitialization方法)

  1. 调用bean的初始化方法(需手动配置init-method)

(把bean的实例传递给后置处理器的postProcessAfterInitialization方法)

  1. Bean可以使用了
  2. 当容器关闭的时候,调用bean的销毁方法(需手动配置destory-method和.close)

Bean管理两种实现方式 :

  1. 基于XML配置文件方式实现
  1. 基于XML方式创建对象的描述

在spring配置文件中使用Bean标签,添加对应属性,来创建对象,创建对      象时      也默认执行无参构造方法

  1. 基于XML方式注入属性的基本方式(DI:依赖注入,就是注入属性,是IOC的一种具体实现)

set注入 : property标签

构造方法注入:constructor-arg标签

  1. Null值注入

在property标签中加入null标签

  1. 特殊符号注入

<>可以进行转义,或者将特殊符号内容写入CDATA结构中:  <![CDATA[..**..]]>

  1. 内部bean和级联赋值

不在外部创建<bean>标签将对象属性注入,而是在<property>标签中创建       <bean>标签并且对对象属性赋值的行为称为内部bean注入

级联赋值:指在创建一个类的bean对象的时候将另一个类的bean对象也进行        赋值的行为

  1. 基于注解方式实现

注解:注解是代码的特殊标记,注解作用在类上面,方法上面和属性上面,目的是           简化XML配置代码

格式:@注解名称(属性名=属性值,属性名=属性值)(可以不写id属性值,默认是类名首字                    母小写)

*步骤 1.引入spring-aop.jav包依赖

2.开启组件扫描   <context:component-scan>标签

3.在类上面添加创建对象注解@Componet,@Sercvice,@controller或                            @Repository

注解注入属性:在属性上面添加注解

@AutoWired:根据属性类型进行自动装配

@Qualifier:根据属性名称进行注入(当一个接口有多个实现类时不能用@Autowired,就需要指                       定对象名称注入)

@Resource:可以根据类型注入,也可以根据名称注入

@Value:注入普通类型属性(上面三个是注入对象类型属性)

AOP

AOP概念

面向切面编程,通俗来讲就是在不修改源码的情况下,在主干功能中添加新的功能

AOP术语

连接点:类里面可以被增强的方法,这些方法被称为切点

切入点:实际被增强的方法被称为切入点

通知  :也叫增强,实际增加的逻辑部分称为通知(增强),有5种类型(前置/              后置/环绕/异常/最终通知)

切面  :把通知应用到切入点的过程叫做切面

AspectJ

Spring框架中一般都是通过AspectJ实现AOP操作

AspectJ并不是Spring的组成部分,是独立的AOP框架,一般把它和Spring框架一起使用,进行AOP操作

AspectJ两种实现AOP的方式

  1. 基于XML方式实现
  2. 基于注解方式实现(推荐)

在增强类上添加注解@Aspect 生成类代理对象( 在此之前需要在XML文件中配置           <aop:aspectj-autoproxy>标签 )

切入点表达式

作用是知道对那个类的那个方法进行增强

语法:(execution([权限修饰符][返回值类型][类全路经].[方法名称](参数列表))) 例:

(1)对com.ithiem.spring.Dao类下的add方法进行增强

Execution(*com.ithiem.spring.Dao.add(..))

  1. 对com.ithiem.spring.Dao类下的所有方法进行增强

Execution(*com.ithiem.spring.Dao.*(..))

       相同切入点抽取:在构造方法上添加@Pointcut注解,抽取后通知类型value属性

填方法名即可

例如下代码可写:@Befor(value=”pointdemo”)

                           @Pointcut(value = "execution(* com.atguigu.spring5.aopanno.User.add(..))")

                       public void pointdemo() {

}

五种通知类型

@Before(value=”切入点表达式)前置通知:方法执行之前执行

@After()最终通知:方法执行之后执行,不管有没有异常都执行

@AfterReturning()返回通知:方法返回结果值之后执行,比@after靠后

@AfterThrowing()异常通知

@Around()环绕通知

公共切入点提取和优先级

提取:建立一个方法,在方法上用切入点注解@Pointcut(切入点表达式),当通知使用相同切入点时直接在属性值填入方法名即可

@Order():添加在增强类上,当一个方法有多个增强类的时候需要设置优先级,值越小优先级越高,优先级高的先执行

底层原理

AOP底层使用动态代理

动态代理步骤:

(1)创建一个实现接口InvocationHandler的类,它必须实现invoke方法

(2)创建被代理的类以及接口

(3)通过Proxy的静态方法newProxyInstance(ClassLoaderloader, Class[]                      interfaces, InvocationHandler h)创建一个代理

(4)通过代理调用方法

  1. 有接口的情况,使用jdk动态代理:

    首先创建需要动态代理的接口                

         

  2.   需要代理的实际对象                    

  3.     

    调用处理器实现类

    当代理对象调用真实对象的方法时,其会自动的跳转到代理对象关联的handler对象的invoke方法来进行调用。也就是说,当代码执行到:

    subject.SayHello("jiankunking")这句话时,会自动调用InvocationHandlerImpl的invoke方法

springIOCAOP
六月Bing的博客
12-31 549
概述 Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。 Spring 框架是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。 Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。 Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应
SpringIOCAOP思想
weixin_49161209的博客
07-31 1412
Spring框架的两大核心(iocaop) 一、ioc:控制反转(Inversion of Control)思想 1.1、由spring来负责控制对象的生命周期和对象间的关系(SSM框架中的依赖关系)通过注解扫描的方式(底层使用反射)装入一个 1.2、作用:解耦(入下图) 这就是没使用ioc思想下的关系图(耦合度太高) 1.3、控制反转思想前提 —— 依赖注入(DI)(一般都是set注入) Dependency Injection,说的是创建对象实例时,同时为这个对象注入它所依赖的属性。相当于把每个b
SpringIOCAOP介绍
热门推荐
weixin_50748675的博客
04-26 1万+
Spring介绍 1.spring是轻量级的开源的JavaEE框架 2.Spring可以解决企业应用开发的复杂性 3.Spring有两个核心部分:IOCAOP ​ (1)IOC:控制反转,把创建好的对象给Spring进行管理 ​ (2)AOP:面向切面编程,不修改源代码的情况下进行功能增加。 Spring特点 1.方便解耦,简化开发。 2.AOP支持 3.方便程序测试 4.方便和其他框架整合 ​ 6.降低了API开发难度 IOC IOC底层原理和基本概念 inversion f
spring框架iocaop
toomemetoo的博客
02-19 235
spring框架的作用 解耦,降低模块之间的依赖性,解决对象的解耦合 作为容器,装配的是Java对象 spring的优点 简化开发,高效,企业使用比较多 轻量,核心jar包只有3M 针对接口编程,解耦
Spring框架 IOCAOP
TANGWENYU_的博客
06-15 215
IOC是一种设计思想,就是将原本在程序中需要手动创建的对象,交由Spring管理创建。例如我们要在A类中调用B类的对象,就直接在A类中new处对象,然后调用B类中的方法,虽然能够实现效果,但当想要修改需求时,只能修改源码。所以现在创建B类对象就交给了Spring,在Spring中,B类对象被看成了Bean(Spring中类就是Bean),这个Bean由Spring创建和管理,这样就不会主动new,由spring创建,降低了耦合,其中依赖类不需要通过程序员实例化,而是通过Spring容器帮我们new指定实例并
Spring框架IOCAOP
as15282235592的博客
08-14 388
spring
Spring核心功能之——IOCAOP
yzl1293346757的博客
12-07 1227
Spring中的IOCAOP的思想,以及在Spring中是如何使用的
Spring4Ioc-Aop
04-20
- **依赖注入 (DI)** 和 **面向切面编程 (AOP)** 是Spring框架的两个核心特性,它们分别解决了对象依赖管理和横切关注点的问题。 - **DI** 的典型实现方式包括Setter注入和构造器注入。 - **AOP** 通过定义切入点、...
IOCAOP以及spring框架的的面试
zzs1126的博客
04-03 483
在软件业,AOP为Aspect Oriented Programming的缩写,意味:面向切面编程.通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,AOP是OOP的延续.将一些共性的内容进行抽取,在需要用到的地方,以动态代理的方式进行插入.在不修 改源码的基础上,还能对源码进行前后增强。属性的依赖注入,spring在通过IOC创建对象的时候,如果对象还有属性,就一并给赋值进去DI是在IOC的基础上进行对象的属性 注入。
Spring框架——IOCAOP以及DI
weixin_73656077的博客
03-25 799
Spring框架
Spring框架中的AOPIOC
一切如你的博客
12-02 405
Spring框架中的AOPIOC
Spring框架IOCAOP介绍
weixin_30741653的博客
08-23 101
说明:本文部分内容参考其他优秀博客后结合自己实战例子改编如下 Spring框架是个轻量级的Java EE框架。所谓轻量级,是指不依赖于容器就能运行的。Struts、Hibernate也是轻量级的。 轻量级框架是相对于重量级框架而言的,重量级框架必须依赖特定的容器,例如EJB框架就必须运行在Glassfish、JBoss等支持EJB的容器中,而不能运行在Tomcat中。——《Java Web整...
SpringIOCAOP
机械工程跑路哥
03-16 3385
IOC(控制反转)和AOP(面向方面编程)作为Spring框架的两个核心,可以很好地实现解耦合。
Spring框架:IOCAOP理解
青语的博客
07-01 722
前言 Guide的文章面试被问了几百遍的 IoCAOP ,还在傻傻搞不清楚?写的很容易理解,根据他的思路总结一下. 1. IOC理解 在Spring中我们经常提到的IOC并不是一个技术实现,而是一种设计理念.描述的是:Java 开发领域对象的创建以及管理的问题。 1.1 定义 IOC(Inversion of control)叫做控制反正. 控制:是指对象的创建和管理的权利. 反转:将这种权利交给外部环境(框架或容器). 1.2 优势 IOC减少了对象之间的耦合度(不需要我们自己在一个类里面写创
Spring框架核心机制IOCAOP深入解读spring基础
哈哈
04-26 1108
①导入Spring依赖 ②创建Bean ③创建String核心配置文件 applicationContext.xml ④在Spring配置文件中配置Bean ⑤创建ApplicationContext对象,通过getBean方法获得Bean实例
深入理解Spring框架IOC容器和AOP
李也的博客
05-13 2437
深入理解Spring框架IOC容器和AOPSpring开源框架的简介SpringIOC容器和DISpring面向切面编程(AOP)概念定义: Spring开源框架的简介 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架Spring的基本框架主要模块:DAO、ORM、AOP、Context、WEB、CORE。 Spring DAO:Spring提供了对JDBC的...
IOCAOPSpring框架
m0_68968100的博客
04-03 408
IOCAOPSpring框架
spring框架两大核心:IOCAOP的详解
最新发布
JBIB ENGINE
12-01 1552
切面就是关注点代码形成的类。IOC:(Inverse of Control)控制反转,也叫DI依赖注入,指的是将对象的创建权交给 Spring 容器去创建,利用了工厂模式将对象交给容器管理,只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。2)代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象。System.out.println("---------------前置通知结束----------------");
Spring框架IOCAOP的简单项目实现
weixin_51293984的博客
10-30 1006
Spring框架是为了解决企业应用开发复杂性而创建的,是Java应用钟最广的框架,它的成功来源于设计思想,而不是技术本身,即IOC(inversion of control,控制反转)和AOP(Aspect oriented programming,面向切面编程)的核心概念。它将面向接口的编程思想贯穿整个系统,解决了项目中各层的松耦合问题,简化企业项目开发
Spring框架深度解析:IoCAOP与核心特性
文中还概述Spring框架的各个主要封装包,如Core、Context、DAO、ORM和AOP,解释了它们各自的作用,如Core包中的BeanFactory,Context包的上下文功能,DAO包的JDBC抽象层,ORM包对ORM框架的集成,以及AOP包的面向切...
写文章

热门文章

  • SQLite数据库 4450
  • OC---IOS开发入门学习(一) 1918
  • @RequestParam和@RequestBody 1850
  • Android开发——kotlin语法进阶3 1115
  • Android开发——kotlin语法基础 898

分类专栏

  • 微服务 3篇
  • kotlin 4篇
  • Android 2篇
  • spring 2篇

最新评论

  • OC---IOS开发入门学习(一)

    银杏.: 期待Up继续更新

  • Spring框架IOC及AOP概述

    CSDN-Ada助手: 推荐 Java 技能树:https://edu.csdn.net/skill/java?utm_source=AI_act_java

  • Spring框架IOC及AOP概述

    CSDN-Ada助手: 不知道 Java 技能树是否可以帮到你:https://edu.csdn.net/skill/java?utm_source=AI_act_java

大家在看

  • 2181. 合并零之间的节点
  • 不同语言的switch/case语句
  • 企业网络项目调试系列-05核心网安全 DHCP SERVER与DHCP SNOOPING配置 1229
  • 渗透神器Kali Linux系统官方版的安装教程(超详细,保姆级教程) 260
  • 闯关leetcode——66. Plus One 783

最新文章

  • OC---IOS开发入门学习(一)
  • Redis数据库的安装详解
  • 微服务——远程调用和Eureka注册中心
2023年2篇
2022年11篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司黄山网站优化工具化工网站seo优化服务宝坻区网站优化价格甘肃网站关键词排名优化技巧营口网站优化关键词网站页面优化工具网站的优化不包括什么怎么优化网站全体易速达网站外链优化公司贵州百度网站优化网站关键词优化从哪里下手四川品牌网站建设优化浙江企业网站排名优化公司网站内链建设优化需要注意什么网站文章优化和长短有关系吗网站排版最优化问题慈东工业区网站优化无锡seo网站排名优化盐城网站建设优化案例云引擎网站优化九江网站优化热线珠海网站优化技术桥头新能源网站优化网站推广优化zd灬云速捷成都网站建设优化前十宜春网站综合优化昆明正规网站优化seo价格商河县网站seo优化排名金华网站优化常识网站搜索引擎优化有哪些歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化