Spring常见面试题

Spring中用到的设计模式

  • 工厂设计模式
比如通过BeanFactory和ApplicationContet来生产Bean对象
  • 代理设计模式
AOP的实现方式就是通过代理模式来实现的,Spring使用的代理模式是JDK动态代理和CGLIB代理
  • 单例设计模式
Spring中Bean默认都是单例的
  • 模板设计模式
Spring中JDBCtemplate等以Template结尾的对数据库操作的类,都会使用到模板设计模式。
  • 包装器设计模式
我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源
  • 观察者模式
Spring事件驱动模型观察者模式
  • 适配器模式
SpringAOP的增强通知(Advice)使用到了适配器模式

Spring中有哪些核心模块

  • SpringCode
Spring核心,特使框架的最基础部分,提供了Ioc和依赖注入
  • SpringContext
Spring上下文容器,它是BeanFactory功能加强的一个子接口
  • SpringWeb
它提供了web应用开发的支持
  • SpringMVC
它针对Web应用中的MvC思想的实现
  • SpringDao
提供了对JDBC抽像层,简化了JDBC代码,同时,编码更具有健壮性
  • SpringORM
它支持用于流行的ORM框架得到整合,比如Spring+Hibernate+Spring+ibatis
  • SpringAop
即面向切面编程,它提供了于AoP兼容的实现

说一下你理解得到IoC容器

首先IOC是一个容器,是用来装载对象的,他的核心思想就是控制反转
什么是控制反转
把对象的控制器交给了SPring容器,有Spring容器来进行管理,我们不进行任何操作
为什么需要控制反转
在没有控制反转时,我们需要自己去创建对象配置对象,还人工区处理对象与对象之间的各种复杂的依赖关系。
当一个工程量起来之后,这种关系的维护时非常头疼的,所以才有了控制反转这个概念。将对象的创建的方式交给Spring对象进行管理,我们在使用的时候只要去取就好了。

Spring中的IOC容器有哪些?有什么区别

spring主要提供了两种IOC容器,一种时BeanFactory,还有一种是ApplicationContext
它们的区别就是,BeanFactory只提供了最基本实例对象和取对象的功能,而是ApplcayionContext是继承了BeanFactory所派生出的产物,是其子类,它的作用更加强大,比如支持注解,国际化等功能

BeanFactroy和FacroryBean的区别

这两个是不同的产物
BeanFactory是IOC容器,是用来承载对象的
FactoryBean是一个接口,为Bean提供了更加灵活的方式,通过代理一个Bean对象,对方法前后做一些操作//

@Repository,@Service,@Compent,@Controller他们有什么区别

这个四个注解本质都是一样的,都是将该被注解标识的对象Spring容器中,只是为了标识对象放入Spring容器中,只是为了使用上区分不同的应用分层
@Repository:Dao层
@Service:service层
@Compent:contoller层
@Controller:其他不属于三层的统一使用该注解
上一篇:DI总结


下一篇:【Java高级工程师蜕变之路】010 Spring IOC源码分析