Spring 面试总结
1.spring bean 的生命周期
- spring 容器根据配置中bean的定义实例化bean
- 根据依赖注入填充属性
- 如果bean 实现了BeanNameAware 接口,工厂通过bean id调用 setBeanName()
- 如果bean 实现了BeanFactoryAware,则通过自身实例调用setFactoryBean()
- 如果存在与bean 关联的BeanPostProcessers,则调用preProcessBeforeInitialization()方法
- init 初始化bean
- 调用postProcessAfterInitialization()
- 最好调用destroy() 销毁bean
2.BeanFactory 与 ApplicationContext
BeanFactory 是spring 最底层的接口,只提供最简单的功能,创建bean 与获取bean, 使用beanFactory 的时候,初始化不会实例化bean ,只有获取bean 实例的时候才会实例化
ApplicationContext 也叫做应用上下文,继承 BeanFactory,相比提供了更多的功能。默认的情况下启动就会加载所有的bean ,可以通过配置实现懒加载
3.Spring Ioc 与 Aop
Ioc 控制反转,就是由spring 容器控制对象的生命周期和对象之间的关系。通常一个业务逻辑需要多个对象协作完成,通过 new Object () 创建使得代码有比较强的耦合
而ioc使得对象之间的依赖和创建由spring 完成,当需要某个对象时,由spring 动态的创建,代码只需要关注逻辑即可
aop 面向切面编程,在oop 的编程中,对于权限认证、日志、事物等业务逻辑基本都需要的功能,会造成大量重复的代码,不利于重用。aop 的作用是分离系统中的关注点,
进一步使得模块间的耦合度降低,提高重用性
4.四种注入注解
@Autowire 自动装配,根据类型 byType
@Resource 根据name 注入,byName
@Quilifier 按照类型注入的基础上再按名称注入
@Value 注入普通常量
5.Spring Aop
- 连接点 :所有可以被增强的方法称为连接点
- 切入点 : 实际被增强的方法
- 通知、增强
- 前置通知
- 后置通知
- 异常通知
- 返回通知
- 环绕通知
- 切面:把增强应用到方法的过程