描述一下Spring中Bean的生命周期
- 解析类得到BeanDefinition
- 如果有多个构造方法,则要推断构造方法
- 确定好构造方法后,进行实例化得到一个对象
- 对对象中的加了@Autowired注解的属性进行属性填充
- 回调Aware方法,比如BeanNameAware,BeanFactoryAware
- 调用BeanPostProcessor的初始化前的方法
- 调用初始化方法
- 调用BeanPostProcessor的初始化后的方法,在这里会进行AOP
- 如果当前创建的bean是单例的则会把bean放入单例池
- 使用bean
- Spring容器关闭时调用DisposableBean中destory()方法
你是怎么理解Spring中的IOC的?
IOC是Spring Framework中众多特性中的一个特性,表示控制反转,Spring相当于项目里的管家,管理项目中的对象,控制反转,表示对象的控制权本来是在程序员手中的,现在交给了Spring,所以Spring获得了对象的控制权,比如,Spring负责去进行实例化得到对象,Spring负责通过反射去给对象中的属性进行赋值,这些动作都不需要程序员去做,Spring自动帮程序员做了。
你是怎么理解Spring中的AOP的?
AOP表示面向切面编程,是Spring Framework中众多特性中的一个特性,AOP可以对某个对象或某些对象的功能进行增加,比如对象中的方法进行增加,可以在执行某个方法之前额外的做一些事情,在某个方法执行之后额外的做一些事情,通常,我们会利用AOP机制来实现权限控制,日志记录,缓存,包括Spring中的事务也是通过AOP来实现的。在Spring中,AOP是通过动态代理来实现的。
Spring中的@Autowired注解的工作原理是怎样的?
@Autowired注解表示自动注入,是Spring体系中Java Config取代xml中的一种,因为在使用xml时也可以设置是否需要自动注入,只不过Spring默认是关闭的,所以不为人所知。
而@Autowired注解则取代了xml中的自动注入功能,并进行了优化,使得Spring中的自动注入功能更加方便使用。
@Autowired注解可以写在属性上,构造方法上,普通方法上,表示Spring在进行生命周期的过程