Spring框架
1.基于xml配置的springbean,如果要使用@Autowired注解,需要在xml配置中写上什么标签?
①<context:annotation-config/>或②<context:component-scan/>
2.如何用代码(实现什么接口)向IOC容器中注册Spring bean?
BeanDefinitionRegistryPostProcessor
3.Spring支持几种bean的作用域?
①singleton : bean在每个Spring ioc容器中只有一个实例
②prototype:一个bean的定义可以有多个实例。
③request:每次http请求都会创建一个bean.
④session:在一个HTTP Session中,一个bean定义对应—个实例
4.Spring Bean的生命周期?
①实例化Bean对象
②设置对象属性
③检查是否实现Aware相关接口,并设置相关依赖
④执行BeanPostProcessor前置处理
⑤检查是否是InitializingBeanl以决定是否调用afterPropertiesSet方法
⑥检查是否配置有自定义的init-method方法
⑦执行BeanPostProcessor后置处理
⑧注册必要的Destruction相关回调接口
⑨(等待大家补充)
⑩是否实现DisposableBean接口,如果有,则执行相应的方法
⑩是否配置有自定义的destroy方法,如果有则执行销毁
5.如何强制使用CGLIB实现AOP?
①添加cglib库,如果是基于xml配置spring,在spring配置文件中加入<aop:aspectj-autoproxy proxy-target-class="true"/>;
②如果是基于Springboot,则使用EnableAspectJAutoProxy(ProxyTargetClass=true)
6.用什么注解能控制Spring中2个bean的初始化顺序?
①@DependOn; @Order
7.Spring Boot自动配置原理?
SpringBoot自动配置最主要的注解就是@enableAutoConfiguration,这个注解会导入一个EnableAutoConfigurationlmportSelector的类,而这个类会去读取类路径下所有jar包里META-INF/spring.factories 下key为EnableAutoConfiguration的对应值,找到相应得配置类,然后执行相应配置
来康康面试题⑧