⾯试中怎么回答SpringIOC,AOP
你对spring的理解?
答:spring最重要的两个机制就是IOC控制反转和AOP⾯向切⾯编程。
IOC容器获取对象是程序在加载xml配置⽂件时通过反射调⽤构造函数来
创建对象(我们开始学就是在xml⾥配置的),讲到控制反转就要讲它的依赖注⼊模式,
DI依赖注⼊是控制反转的⼀个具体例⼦,
在xml⽂件中依赖注⼊机制是通过ref属性将其他bean放到当前bean对象,
注⼊⽅式有通过配置xml⽂件注⼊和注解注⼊,
在xml⽂件⾥注⼊:属性注⼊(property)、构造器注⼊(constructor-arg)、⾃动装配通过对bean的autowrite属性指定(byName、byType)
注解注⼊:有autowrite、resource、component等
@Autowired和@Resource两个注解的区别:
1)、@Autowired默认按照byType⽅式进⾏bean匹配,@Resource默认按照byName⽅式进⾏bean匹配
2)、@Autowired是Spring的注解,@Resource是J2EE的注解,
IOC(控制反转),将类的创建和依赖关系写配置⽂件⾥,由配置⽂件注⼊,实现了松耦合。传统的创建对象的⽅法是直接通过 new 关键字,⽽ spring 则是通过 IOC 容器来创建对象,也就是说我们将创建对象的控制权交给了 IOC 容器。IOC 让程序员不再关注怎么去创建对象,⽽是关注与对象创建之后的操作,把对象的创建、初始化、销毁等⼯作交给spring容器来做。
(软件设计中的“耦合”指,两个功能函数之间的依赖程度。⽐如,你设计的⼀个程序,需要你编写10个功能函数来实现。如果这10个功能中,有9个功能都要调取第10个功能函数X10,那么,当你在修改X10时,你就要考虑修改完成后,是否会对其它9个功能函数有影响,为了查看是否有不好影响,你就要对其它9个功能函数,⼀个⼀个进⾏测试。所以,为了避免产⽣这种后期修改的劳动量。就提倡【松耦合】,就是,功能函数之间,尽量依赖程度不要太⾼。否则,修改完⼀个底层函数后,会对多个上层函数,进⾏⼤量的测试。)
依赖注⼊(DI机制)(依赖注⼊(Dependecy Injection)和控制反转(Inversion of Control)是同⼀个概念,具体的讲:当某个⾓⾊需要另外⼀个⾓⾊协助的时候,在传统的程序设计过程中,通常由调
⽤者来创建被调⽤者的实例。但在spring中创建被调⽤者的⼯作不再由调⽤者来完成,因此称为控制反转。创建被调⽤者的⼯作由spring来完成,然后注⼊调⽤者)
spring ioc注解AOP(Aspect-Oriented Programming⾯向层⾯的编程)将安全、事务等,于逻辑相对独⽴的功能抽取出来,利⽤spring的配置⽂件将这些功能插进去,实现了按照切⾯编程,提⾼了复⽤性。Spring⽀持⾯向切⾯的编程,并且把应⽤业务逻辑和系统服务分开,
AOP简单地说,就是将那些与业务⽆关,却为业务模块所共同调⽤的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP代表的是⼀个横向的关系,如果说“对象”是⼀个空⼼的圆柱体,其中封装的是对象的属性和⾏为;那么⾯向⽅⾯编程的⽅法,就仿佛⼀把利刃,将这些空⼼圆柱体剖开,以获得其内部的消息。AOP中的jdk动态代理是通过反射机制实现的,还有⼀个是CGLIB动态代理。(Spring AOP的底层实现有两种⽅式:⼀种是JDK动态代理,另⼀种是CGLib的⽅式)
spring主要由以下⼏个模块组成:
Spring Core:核⼼类库,提供IOC控制反转服务;也称核⼼容器:核⼼容器提供 Spring 框架的基本功能(Spring Core)。核⼼容器的主要组件是 BeanFactory,它是⼯⼚模式的实现。BeanFactory 使⽤控制反转(IOC)模式将应⽤程序的配置和依赖性规范与实际的应⽤程序代码分开。
Spring Context:提供框架式的Bean访问⽅式,以及企业级功能;
Spring AOP;AOP⾯向切⾯编程;
Spring DAO:对JDBC的抽象,JDBCDAO抽象层提供了有意义的异常层次结构,可⽤该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极⼤地降低了需要编写的异常代码数量(例如打开和关闭连接)。
Spring ORM:对现有的ORM框架的⽀持;
Spring Web:提供了基本的⾯向Web的综合特性,例如多⽅⽂件上传;
SpringMVC:提供⾯向Web应⽤的Model-View-Controller实现;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论