2021.1.31Java面试题总结

spring框架

1.注解的原理?

注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象。通过代理对象调用自定义注解的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。

2.Bean的生命周期?

下面是Spring3的Bean生命周期。

  1. Spring对Bean 进行实例化.
  2. Spring 将值和Bean的引用注入进Bean对应的属性中。
  3. 如果Bean 实现了BeanNameAware 接口, Spring 将bean 的ID 传递给setBeanName() 接口方法.
  4. 如果Bean实现了BeanFactoryAware 接口, Spring 将调用setBeanFactory()接口方法,将BeanFactory容器实例传入.
  5. 如果Bean 实现了ApplicationcontextAware 接口 Spring 将调用setApplicationContext() 接口方法,将应用上下文的引用传入。
  6. 如果Bean实现了BeanPostProcessor 接口Spring 将调用它们的postProcessBeforeInitialization 接口方法。
  7. 如果Bean 实现了InitializingBean 接口,Spring 将调用它们的afterPropertiesSet()接口方法. 类似地,如果Bean 使用init-method 声明了初始化方法,该方法也会被调用。
  8. 如果Bean 实现了BeanPostProcessor 接口, Spring 将调用它们的postPoressAfterInitilization方法.
  9. 此时此刻Bean 已经准备就绪.可以被应用程序使用了. 它们将一直驻留在应用上下文中.直到该应用上下文补销毁。
  10. 如果Bean实现了DisposableBean 接口,Spring 将调用它的destroy()接口方法。同样,如果Bean 使用destroy-method 声明了销毁方法,方法也会被调用。

3.spring如何减少XML的配置数量?

自动装配(autowiring)有助于减少甚至消除<property>元素和<constructor-arg>元素,让Spring自动识别如何装配Bean的依赖关系。
自动检测(autudiscovery)比自动装配更进一步,让Spring能够自动识哪些类需要被配置成Spring Bean,从而减少对Bean元素的使用。

4.四种类型的自动装配?

byName——把与Bean的属性具有相同名字(或者ID)的其它Bean自动装配到对应属性中。如果没有跟属性的名字相匹配的Bean,则该属性不进行装配。
byType——把与Bean的属性具有相同类型的其它Bean自动装配到对应属性中。如果没有跟属性的类型相匹配的Bean,则该属性不进行装配。
constructor——把与Bean构造器参数具有相同类型的其他Bean自动装配到Bean构造器的对应参数中。
autodetect——首先尝试使用constructor进行自动装配,如果失败,再尝试使用byType进行自动装配。

5.什么是反射,反射可以干什么?

反射是:指程序可以访问、检测和修改它本身状态或行为的一种能力
平时用反射主要做:
获取类型的相关信息
动态调用方法
动态构造对象
从程序集中获得类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值