Spring
2020-08-03 12:37:58 0 举报
Spring面试问题
作者其他创作
大纲/内容
Spring
以下三个都是@Component的衍生注解@Repository@Service@Contorller@Autowired
①BeanFactory和ApplicationContext都是Spring的两大核心接口,ApplicationContext是BeanFactory的子接口,提供了更完整的框架功能(国际化,加载多个配置文件)②BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化。这样存在一个问题,就是我们不能及时的发现错误,只有在调用getBean的时候才能发现注入不成功等错误。ApplicationContext,它是在容器启动时,一次性创建了所有的Bean。这样容易发现注入不成功的对象,并及时修改。缺点是:占用内存空间,当程序中Bean比较多的时候,程序启动较慢。
以上几个步骤完成后,Bean就已经被正确创建了,之后就可以使用这个Bean了。
InitializingBean 与 init-method如果Bean在Spring配置文件中配置了 init-method 属性,则会自动调用其配置的初始化方法。
构造器注入
实例化Bean对于BeanFactory容器,当客户向容器请求一个尚未初始化的bean时,就会调用createBean进行实例化。对于ApplicationContext容器,当容器启动结束后,通过获取BeanDefinition对象中的信息,实例化所有的bean。
常用的注解
处理Aware接口①如果这个Bean已经实现了BeanNameAware接口会调用它实现的setBeanName(String beanId)方法,此处传递的就是Spring配置文件中Bean的id值;②如果这个Bean已经实现了BeanFactoryAware接口,会调用它实现的setBeanFactory()方法,传递的是Spring工厂自身。③如果这个Bean已经实现了ApplicationContextAware接口,会调用setApplicationContext(ApplicationContext)方法,传入Spring上下文;
Set方法注入
Bean的生命周期
DisposableBean当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用其实现的destroy()方法;
BeanPostProcessor如果想对Bean进行一些自定义的处理,那么可以让Bean实现了BeanPostProcessor接口
destroy-method最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法。
设置对象属性(依赖注入)
大部分的Spring bean并没有可变的状态(比如Serview类和DAO类),所以在某种程度上说Spring的单例bean是线程安全的。如果有可变状态的话,将bean的作用域由“singleton”变更为“prototype”。
(1)singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护。(2)prototype:为每一个bean请求提供一个实例。(3)request:为每一个网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收。(4)session:与request范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。(5)global-session:全局作用域,global-session和Portlet应用相关。当你的应用部署在Portlet容器中工作时,它包含很多portlet。如果你想要声明让所有的portlet共用全局的存储变量的话,那么这全局变量需要存储在global-session中。全局作用域与Servlet中的session作用域效果相同。
通过type设置参数类型
(1) @Autowired默认是按照类型装配注入的,默认情况下它要求依赖对象必须存在(可以设置它required属性为false)。(2) @Resource默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入。
P命名空间注入和C命名空间注入
概述
通过index设置参数的位置
对象无需自己查找或创建与其关联的其他对象,由容器负责把需要相互协作的对象引用赋予各个对象
BeanFactory和ApplicationContext有什么区别
Spring通知有哪些类型
Spring的自动装配
Spring基于xml注入bean的几种方式
AOP一般称为面向切面,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块。这个模块被命名为“切面”(Aspect)。一般可用于权限认证,日志和事务处理。
(1)前置通知(Before advice)(2)返回后通知(After returning advice)(3)抛出异常后通知(After throwing advice)(4)后通知(After (finally) advice)(5)环绕通知(Around Advice)
①在xml的bean标签上配置autowire,可以是byName通过属性名字,也可以是byType通过类型。②使用注解@Autowire
Spring支持的几种bean的作用域
Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。
Spring框架中的单例Beans是线程安全的么?
IOC一般叫做控制反转,是指创建对象的控制权的转移,以前创建对象的主动权和时机是由自己把控的,而现在这种权力转移到Spring容器中,并由容器根据配置文件去创建实例和管理各个实例之间的依赖关系。实现方法是依赖注入(DI)
0 条评论
回复 删除
下一页