java常见⾯试题锦集(spring)
说你下你对Spring IOC的了解
Spring IOC(inversion of control)负责控制对象的⽣命周期和对象间的关系。
DI(Dependency Injetion)依赖注⼊:动态的向对象注⼊它所需要的对象。
好处:降低对象之间的耦合度,是程序更加稳定。
简单介绍下Spring AOP
Spring AOP⾯向切⾯编程,在⾯向对象(oop)编程思想中,我们将事务抽象成⼀个个的对象,⽽在⾯向切⾯编程中,我们将⼀个个对象某些类似的⽅⾯横向抽成⼀个切⾯,对这个切⾯进⾏⼀些如权限控制,事务管理,记录⽇志等公⽤操作处理的过程就是⾯向切⾯的思想,AOP 底层是动态代理,如果是接⼝采⽤的是JDK动态代理,如果是类采⽤CGLIB⽅式实现动态代理。
spring如何开启注解注⼊属性
spring在2.5版本之后开始⽀持注解的⽅式依赖注⼊,可以⽤注解的⽅式替代xml的bean的描述,注解注⼊将会被容器在xml中bean注⼊之前处理。所以xml会覆盖掉注解的对同⼀属性的处理结果。
注解装配在spring中是默认关闭的,所以需要在spring核⼼配置⽂件中⼿动开启,配置如下:
<context:annotation-config/>
@Autowried和@Resource的区别
两者都是⽤来装配bean的, 可作⽤于字段上, 也可以作⽤于setter⽅法上。
@Autowried:spring的注解,默认情况下要求对象必须存在, 它要求依赖对象必须存在. 若允许null值, 可以设置它的required为false.
默认按照类型进⾏装配注⼊. 如果想按照名称进⾏装配的话, 需要与Qualifer注解搭配使⽤.
@Autowried
@Qualifier("admin")
private AdminDAO adminDAO;
@Resource:j2ee的注解,默认按照名称来装配注⼊, 只有不到与名称匹配的bean才会按照类型来注⼊。
Spring bean的⽣命周期
Spring对bean进⾏实例化,默认bean是单例;
Spring对bean进⾏依赖注⼊;
如果bean实现了BeanNameAware接⼝,spring将bean的id传给setBeanName()⽅法;
如果bean实现了BeanFactoryAware接⼝,spring将调⽤setBeanFactory⽅法,将BeanFactory实例传进来;
如果bean实现了ApplicationContextAware接⼝,它的setApplicationContext()⽅法将被调⽤,将应⽤上下⽂的引⽤传⼊到bean中;
springboor面试题如果bean实现了BeanPostProcessor接⼝,它的postProcessBeforeInitialization⽅法将被调⽤;
如果bean实现了InitializingBean接⼝,spring将调⽤它的afterPropertiesSet接⼝⽅法,类似的如果bean使⽤了init-method属性声明了初始化⽅法,该⽅法也会被调⽤;
如果bean实现了BeanPostProcessor接⼝,它的postProcessAfterInitialization接⼝⽅法将被调⽤;
此时bean已经准备就绪,可以被应⽤程序使⽤了,他们将⼀直驻留在应⽤上下⽂中,直到该应⽤上下⽂被销毁;
若bean实现了DisposableBean接⼝,spring将调⽤它的distroy()接⼝⽅法。同样的,如果bean使⽤了destroy-method属性声明了销毁⽅法,则该⽅法被调⽤;
Spring bean的作⽤域之间有什么区别
Spring容器中的bean可以分为5个范围。
singleton:不管接收多少请求,每个容器只有⼀个bena实例(默认单例)。
prototype:每次调⽤创建⼀个实例。
request:每⼀个请求创建⼀个实例(只应⽤于web)。
Session:每⼀个⽤户session创建⼀个实例。
global-sessioon:global-session和Portlet应⽤相关。当你的应⽤部署在Portlet容器中⼯作时,它包含很多portlet。如果你想要声明让所有的portlet共⽤全局的存储变量的话,那么这全局变量需要存储在global-session中。
全局作⽤域与Servlet中的session作⽤域效果相同。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论