IOC和AOP以及spring框架的的面试宝典

Spring的概述

     Spring 是完全面向接口的设计,降低程序耦合性,主要是事务控制并创建bean实例对象。在ssh整合时,充当黏合剂的作用。IOC(Inversion of Control) 控制反转/依赖注入,又称DI(Dependency Injection) (依赖注入)  

Spring的 IOC和AOP机制 ?

Spring 是完全面向接口的设计,降低程序耦合性,主要是事务控制并创建bean实例对象。在ssh整合时,充当黏合剂的作用。IOC(Inversion of Control) 控制反转/依赖注入,又称DI(Dependency Injection) (依赖注入)和AOP(面向切面编程),这两个也是 Spring 的灵魂

IOC的作用

产生对象实例,所以它是基于工厂设计模式的

Spring IOC的注入

    通过属性进行注入,通过构造函数进行注入,

    注入对象数组     注入List集合   

    注入Map集合      注入Properties类型

 Spring IOC 自动绑定模式:

可以设置autowire按以下方式进行绑定

按byType只要类型一致会自动寻找,            

按byName自动按属性名称进行自动查找匹配.

AOP 面向方面(切面)编程

AOP是OOP的延续,是Aspect Oriented Programming的缩写,

    意思是面向方面(切面)编程。

注:OOP(Object-Oriented Programming ) 面向对象编程

 AOP  主要应用于日志记录,性能统计,安全控制,事务处理(项目中使用的)等方面。

 Spring中实现AOP技术:

     在Spring中可以通过代理模式来实现AOP

     代理模式分为

           静态代理:一个接口,分别有一个真实实现和一个代理实现。

           动态代理:通过代理类的代理,接口和实现类之间可以不直接发生联系,而             可以在运行期(Runtime)实现动态关联。

    动态代理有两种实现方式,可以通过jdk的动态代理实现也可以通过cglib

    来实现而AOP默认是通过jdk的动态代理来实现的。jdk的动态代理必须要有

    接口的支持,而cglib不需要,它是基于类的。

Spring AOP事务的描述:

在spring-common.xml里通过<aop:config>里面先设定一个表达式,设定对service里那些方法  如:对add* ,delete*,update*等开头的方法进行事务拦截。我们需要配置事务的传播(propagation="REQUIRED")特性,通常把增,删,改以外的操作需要配置成只读事务(read-only="true").只读事务可以提高性能。之后引入tx:advice,在tx:advice引用 transactionManager(事务管理),在事务管理里再引入sessionFactory,sessionFactory注入 dataSource,最后通过<aop:config> 引入txAdvice。

Spring实现ioc控制反转描述:

原来需要我们自己进行bean的创建以及注入,而现在交给

spring容器去完成bean的创建以及注入。

所谓的“控制反转”就是 对象控制权的转移,

从程序代码本身转移到了外部容器。

官方解释:

控制反转即IoC (Inversion of Control),

它把传统上由程序代码直接操控的对象的调用权交给容器,

通过容器来实现对象组件的装配和管理。

所谓的“控制反转”概念就是对组件对象控制权的转移,

从程序代码本身转移到了外部容器。

什么是spring框架?

spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,是一个分层的javaEE一站式轻量级开       源框架

spring的作用

方便解耦,简化开发,AOP编程支持,声明式事务支持,集成Junit更加方便的进行分层测试,方便集成各种优秀框架

什么是IOC

控制反转,把创建对象的权利交给spring

什么是DI

属性的依赖注入,spring在通过IOC创建对象的时候,如果对象还有属性,就一并给赋值进去DI是在IOC的基础上进行对象的属性       注入

依赖注入的三种实现方式?

构造器注入,Setter方法注入,接口注入

解释Spring支持的几种bean的作用域

a、singleton : bean在每个Spring ioc 容器中只有一个实例。

b、prototype:一个bean的定义可以有多个实例。

c、request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。

d、session:在一个HTTP   Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring    ApplicationContext情形下有效。

e、global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。

缺省的Spring bean 的作用域是Singleton.

Spring支持的事务管理类型

a、编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。

b、声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务。

你更倾向用那种事务管理类型?

大多数Spring框架的用户选择声明式事务管理,因为它对应用代码的影响最小,因此更符合一个无侵入的轻量级容器的思想。       声明式事务管理要优于编程式事务管理,虽然比编程式事务管理(这种方式允许你通过代码控制事务)少了一点灵活性。

解释AOP

在软件业,AOP为Aspect   Oriented    Programming的缩写,意味:面向切面编程.通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,AOP是OOP的延续.将一些共性的内容进行抽取,在需要用到的地方,以动态代理的方式进行插入.在不修       改源码的基础上,还能对源码进行前后增强。

什么是通知?有哪五种类型的通知?

通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过SpringAOP框架触发的代码段。Spring切面可以应用五种类型的通知:

a、before:前置通知,在一个方法执行前被调用。

b、after: 在方法执行之后调用的通知,无论方法执行是否成功。

c、after-returning: 仅当方法成功完成后执行的通知。

d、after-throwing: 在方法抛出异常退出时执行的通知。

e、around: 在方法执行之前和之后调用的通知。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夜未柒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值