面试之spring

1.什么是spring框架?

Spring框架 是帮助开发者解决开发中基础性的问题,让开发专注于应用程序的开发。
Spring框架本身是按照设计模式精心打造的 ,我们可以在开发环境中放心的集成spring框架,不必担心spring如果在
后台运行工作的。
spring框架至今 大概集成了20多个模块。主要分为核心容器、数据访问/集成、web、aop、工具、消息和测试模块等。

2.使用框架带来的好处?

简单列举一些主要好处:
1)Dependency Injection(DI)方法使得构造器和javabean properties文件中的依赖关系一目了然。
2)于ejb容器比较,ioc容器更加轻量,这样ioc容器在有限的内存和cpu资源的情况下,开发和发布就十分有利。
3)spring没有闭门造车,利用了已有的技术;如orm框架、logging框架、j2ee、quartz、和jdk timer等。
4)要测试一项用spring开发的程序很简单,因为测试环境代码都已经集成在框架中了 ,更简单的是,利用javabean
形式的pojo类,可以很方便的利用依赖注入写入测试数据。
5)spring的web框架是一个精心设计的web mvc框架,为开发者们在web框架的选择上提供了一个更好的选择。
6)spring提供了便捷的事务管理接口,适用于小型的本地事务处理,如单db。也可以用于复杂的共同事务处理
如利用jta

3.万年常问,控制反转(IOC)?依赖注入?

控制反转(Inversion of control),也叫依赖注入(Dependency Injection)
即创建被调用者的实例不是由调用者完成,而是由Spring容器完成,并注入给调用者。

4.详细来说一下 Ioc

Spring中的org.springframework.beans包和org.springframework.context包构成了spring框架Ioc容器基础;
BeanFactory接口提供了一个配置机制,使任何类型的对象都可以配置。
ApplicationContext接口对BeanFactory进行了扩展,在BeanFactory的基础上添加了其它功能,
比如与spring的aop更容易集成,也提供了处理message resource的机制(国际化)、事件传播及应用层配置,
如对web应用的webapplicationContext。
org.apringframework.beans.factory.BeanFactory是Spring IoC容器的具体实现,用来包装和管理各种bean
BeanFactory接口是Spring IoC容器的核心接口。
IOC:就是把对象的创建、初始化、销毁都交给spring来管理,不是由开发者管理。 就是反转

5.BeanFactory和ApplicationContext有什么区别?

BeanFactory可以理解为含有bean集合的工厂类。BeanFactory包含了bean的定义,以便在接收到客户端请求时
将对应的bean实例化。
从表面上看,application context如同beanfactory一样具有bean定义、bean关联关系设置,根据请求分发的功能
但applicationcontext在此基础上还提供了其它功能:
1)提供了支持国际化的文本消息
2)统一的资源文件读取方式
下面列举几种常见的ApplicationContext实现:
1)ClassPathXmlApplicationContext: 从classpath的XML配置文件中读取上下文,并生成上下文定义。
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
2)FileSystemXmlApplicationContext:从文件系统中的XML配置文件读取上下文
3)XmlWebApplicationContext:由Web应用的XML文件读取上下文
4)AnnotationConfigApplicationContext:基于Java配置启动容器

6.将spring配置到应用开发中的几种方式?

1.基于XML的配置
2.基于注解的配置
3.基于java的配置

7.如何基于XML配置的方式配置spring

在spring框架中,springXML配置的主要目的是使所有的spring组件都可以用XML文件的形式来进行配置。
这就意味着不会出现其它的Spring配置类型(声明、或基于javaClass)
spring的XML配置方式是使用被spring命名空间所支持的一系列XML标签实现的。
spring主要有以下的命名空间:
context、beans、jdbc、tx、aop、mvc和aso

8.如何基于java的方式配置spring

spring对java配置的支持是由@Configuration注解和@bean注解来实现的。
有@bean注解的方法将会实例化、配置和初始化一个新对象,这个对象将由spring的IOC容器来管理。
@bean声明所起到的作用与<bean/>元素类似。
被@Configuration声明的类可以通过在同一个类的 内部调用@bean方法来设置嵌入bean的依赖关系

9.如何基于注解的方式配置spring

spring在2.5版本之后开始支持使用注解的方式配置依赖注入。
如果先要使用注解 需要先在spring文件中配置一些 context:annotation-config 
1)@Required:该注解用于设值方法
2@Autowired:该注解用于设值方法、非设值方法、构造方法和变量
3@Qualifier:该注解和@Autowired注解搭配使用,用于消除特定bean自动装配的歧义
4)JSR-250 Annotations:spring支持基于JSR-250注解的,@Resource@PostConstruct@PreDestroy

10.spring bean的生命周期

Springbean的生命周期,简单易懂。在一个bean实例 被初始化时,需要进行一系列初始化操作达到可用状态。
同样,在一个bean不在被调用的时候需要进行相关的析构操作,并从容器中移除。
Spring bean factory负责管理在spring容器中被创建的bean的生命周期。
bean的生命周期由两组回调方法组成
1.初始化之后调用的回调方法。
2.销毁之前调用的回调方法。
Spring框架提供了四种方法管理bean的生命周期事件:
1)InitializingBean和DisposableBean
2)针对特殊行为的其它Aware接口
3)Bean配置文件中的init()方法和destroy()方法。
4)@PostConstruct@PreDestroy注解方法

11.Spring Bean作用域之间的区别?

1.singleton:这种bean范围是默认的,这种范围确保不管接收到多少请求,每个容器中只有一个bean实例,
单例模式由bean factory自身来维护。
2.prototype:原型范围与单例范围相反,为每一个bean请求提供一个实例。
3.request:在请求bean范围内,每一个来自客户端的网络请求都会创建一个实例,请求完成后,bean会失效并被垃圾回收。
4.session:与请求范围类似,确保每个session一个bean的实例,在session过期后,bean随之消失。
5.global-session:全局作用域与servlet中的session作用域效果相同。

12.自动装配模式的区别?

在spring框架中公有五种自动装配
1)no: 这是spring框架默认的设置,在该设置下自动装配是关闭的。
2)byName:根据bean名称设置依赖关系。 容器会根据bean的名称自动在配置文件中查询一个匹配的bean。没找到就报错
3)byType:根据bean类型设置依赖关系。 容器根据bean类型自动在配置文件中查询一个匹配的bean。没有就报错
4)constructor:构造的自动装配和byType类似。查找构造器相同参数类型的bean,没有就抛异常
5)autodetect:自动探测使用构造器或者byType自动装配。首先会尝试找合适的带参构造器, 如果没有找到相应的
构造器或者无参构造器,容器将自动选择byType
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值