IOC AOP Spring的面试

什么是Spring框架

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

Spring特点

方便解耦,简化开发

Aop变成支持

方便程序测试

方便和其他框架进行整合

方便进行事物操作

降低API开发难度

作用
方便解耦,简化开发,AOP编程支持,声明式事务支持,集成Junit更加方便的进行分层测试,方便集成各种优秀框架
什么是IOC
控制反转,把创建对象的权利交给spring
解释Spring支持的几种bean的作用域?
1、singleton : bean在每个Spring ioc 容器中只有一个实例。
2、prototype:一个bean的定义可以有多个实例。
3、request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。
4、session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情
下有效。
5、global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的
SpringApplicationContext情形下有效。 缺省的Spring bean
Spring支持的事务管理类型?
a、编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。
b、声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务。

Spring IOC的注入

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

 注入对象数组     注入List集合   

注入Map集合      注入Properties类型

Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式 .

组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:

  • 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
  • Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
  • Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能 , 集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理任何支持 AOP的对象。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖组件,就可以将声明性事务管理集成到应用程序中。

Spring IOC 自动绑定模式

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

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

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

Spring实现ioc控制反转描述

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

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

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

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

官方解释

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

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

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

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

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

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

 就比如说假设买东西,以前我们需要自己去超市买东西,但是现在我们可以不用自己去超市,我们只要把购物袋放在家门口,IOC就会自己去把我们想要的东西买回来,然后放在袋子里面,我们打开袋子拿起来用就可以了

 Spring中实现AOP技术

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

代理模式分为

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

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

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

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

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

IOC接口(BeanFactory)
IOC思想基于IOC容器完成,IOC容器底层就是对象工厂

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

BeanFactory:

IOC容器中最基本实现方式,时Spring内部使用的接口,不提供开发人员进行使用

特点:加载配置文件的时候不会去创建对象,在获取对象(使用)才会去创建对象

ApplicationContext:

BeanFactory接口的子接口,提供更多更强大的功能,一般有开发人员进行使用

特点:加载配置文件时候就会把在配置文件的对象进行创建

ioc基础

1、先写一个UserDao接口

2、再去写Dao的实现类

3、然后去写UserService的接口

 

4、最后写Service的实现类 

 5、测试类

 接下来就进行增删改查的各种操作

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

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

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

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

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值