控制反转(IOC)
控制反转(IOC)是把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。 所谓的“控制反转”就是对组件控制器的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。
依赖注入(DI)
依赖注入(DI)是对控制反转(IOC)的更准确的描述,即组件之间的依赖关系由容器在运行期决定,即由容器动态的将某种依赖 关系注入到组件之中。 依赖注入(DI)的基本原则是应用组件不应该负责查找或者其他依赖的写作对象。配置对象的工作应该由容器负责,查找资源的逻 辑应该从应用组件的代码中抽取出来,交给容器来完成。
举个例子:一个类A需要用到一个接口B中的方法,那么就需要为类A和接口B建立关系或者是依赖关系,最原始的方法是在列A中创 建一个接口B的实现类C的实例,但这种方法需要开发人员自行维护两者的依赖关系,也就是说当依赖关系发生变动的时候需要修改代码并 重新构建整个系统.如果通过一个容器来管理这些对象以及对象的依赖关系,则只需要在类A中定义好用于关联接口B的方法(构造器或者 setter方法),将类A和接口B的实现类C放入容器中,通过对容器的配置来实现二者的关联。
依赖注入可以通过setter方法注入(设置注入)、构造器注入和接口注入三种方式实现,spring支持setter注入和构造器注入, 通常是由构造器注入来注入必须的依赖关系,对于可选的依赖关系,则setter注入是更好的选择。setter注入需要类提供无参构造器或 者无参的静态工厂来创建对象。
面向切面(AOP)
面向切面是一种程序设计范型,该范型以一种称为切面(aspect)的语言构造为基础,切面是一种新的模块化机制,用来描述分散 在对象、类或方法中的横切关注点。
横切关注是会影响到整个应用程序的关注功能,它跟正常的业务逻辑是正交的,没有必然的联系,但是几乎所有的业务逻辑都会涉 及到这些关注功能。通常,事务、日志、安全性等关注就是应用中的横切关注功能。
bean的作用域有哪些
在spring的早期版本中,仅有两个作用域:singleton和prototype,前者表示bean以单例的方式存在;后者表示每次从容器中 调用bean时,都会返回一个新的实例,prototype通常翻译为原型。 补充:设计模式中的插件型模式中也有一个原型模式,原型模式也是一个常用的模式,例如做一个室内设计软件,所有的素材都在 工具箱中,而每次从工具箱中取出的都是素材对象的一个原型,可以通过对象克隆来实现原型模式。 spring2.x中针对WebApplicationContext新增了3个作用域,分别是:request(每次HTTP请求都会创建一个新的bean)、 session(同一个HttpSession共享同一个bean,不同的HttpSession使用不同的bean)和globalSession(同一个全局session 共享一个bean)。 说明:单例模式和原型模式都是重要的设计模式。一般情况下,无状态或者状态不可变的类适合使用单例模式。在传统开发中,由 于dao持有Connection这个非线程安全对象因而没有使用单例模式;但在spring环境下,所有dao类都可以采用单例模式,因为 spring利用AOP和JavaAPI中的ThreadLocal对非线程安全的对象进行了特殊处理。
异常处理机制
spring相关面试题
最新推荐文章于 2024-06-19 10:40:38 发布