Spring经常问的面试题

Spring的面试题

1.什么是Spring?
答:Spring是java企业级的应用开源开发框架。Spring主要用来开发Java应用,但是有写扩展是针对构建J2EE平台的web应用。Spring框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。
2.使用Spring的好处?
答:1、轻量:Spring是轻量的 ,基本的版本大约2KB。
2、控制反转:Spring通过控制反转实现了松散耦合,对象们给出他 们的依赖,而不是创建或查找依赖的对象们。
3、面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
4、容器:Spring包含并管理应用中对象的生命周期和配置。
5、MVC框架:Spring的WEB框架是精心设计的框架,是Web框架的一个很好的替代品。
6、事务管理:Spring提供了一个持久的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
7、异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。
第二种答案:
答:1、降低了组件之间的耦合性,实现了软件各层之间的解耦。
2、可以使用容易提供的众多服务,如事务管理,消息服务等。
3、容器提供单例模式支持。
4、容器提供了AOP技术,利用她很容易实现如权限拦截,运行期监控等功能。
5、容器提供了众多的辅助类,能加快应用的开发。
6、spring对与主流的应用框架提供了集成支持,如hibernate,JPA,Struts等
7、spring属于低侵入式设计,代码的污染低。
8、独立与各种应用服务器。
9、spring的DI机制降低了业务对象替换的复杂性。
10、Spring的高度开放性,并不强制应用完全依赖Spring,开发者可以自由选择spring的部分或全部。
3.Spring中的核心类有哪些,各有什么作用?
答:BeanFactory产生一个新的实例,可以实现单例模式。
BeanWrapper:提供统一的get及set方法。
ApplicationContent:提供框架的实现,包括BeanFactory的所有功能。
4.Spring中用到的设计模式,并举具体示例?
答:代理模式—在AOP和remoting中被用的比较多。
单例模式—在Spring配置文件中定义的bean默认为单例模式。
工厂模式—BeanFactory用来创建对象的实例。
5.什么是IOC?为什么要用IOC?
答:IOC是控制反转。
创建对象实例的控制权从代码剥离到IOC容器控制(之前的写法,由程序代码直接操作使用new关键字),实际就是你在xml文件控制,控制权的转移时所谓反转,侧重于原理。
第二种:Spring IOC负责创建对象,管理对象(通过依赖注入DI),装配对象,配置对象,并管理这些对象的整个声明周期。
6.什么是AOP?为什么要用AOP?
答:AOP是面向切面编程,是通过动态代理的方式为程序添加统一功能,集中解决一些公共问题。
优点:各个步骤之间的良好隔离性耦合型大大降低。
源代码无关性,再扩展功能的同时不对源码进行修改操作。
7.什么是Spring的事务管理?
答:Spring有两种事务管理。
1.编程式事务,在代码中硬编码。(不推荐使用)
2.声明式事务,在配置文件中配置(推荐使用)
声明式事务分为两种:a.基于xml的声明式事务。
b.基于注解的声明式事务。
8.Spring框架的事务管理有哪些优点?
答:它为不同的事务API如JPA和JDBC,Hibernate,JTA,JDO,提供一个不变的编程模式。
它为编程式事务管理提供了一套简单的API而不是一些复杂的事务API如:支持声明式事务管理。它和Spring各种数据访问抽象层很好得集成。
9.FactoryBean与BeanFactory的区别?
答:BeanFactory式个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似。
10.Spring中的注解?
a.@Repository:标注一个DAO组件类。UserRepository(UserDao)
b.@Component:标注一个普通的Spring Bean类。
c.@Controller:标注一个控制器组件类。
d.@Service:标注一个业务逻辑组件类。
e.@Configuration表示该类作为容器来使用。
f.@Required该注解白表明bean的属性必须在配置的时候设置,通过一个bean定义的显示的属性值或通过自动配置,若@Required的bean属性未设置,抛出BeanInitializationException。
g.@Autowired 是我们使用得最多的注解,其实就是 autowire=byType 就是根据类型的自动注入依赖(基于注解的依赖注入),可以被使用再属性域,方法,构造函数上。
h.@Qualifier 就是 autowire=byName, @Autowired注解判断多个bean类型相同时,就需要使用 @Qualifier(“xxBean”) 来指定依赖的bean的id:
@Controller
@RequestMapping("/user")public class HelloController {
@Autowired
@Qualifier(“userService”)
private UserService userService;
i.@Resource 属于JSR250标准,用于属性域额和方法上。也是 byName 类型的依赖注入。使用方式:@Resource(name=“xxBean”). 不带参数的 @Resource 默认值类名首字母小写。
j.@PostConstruct 和 @PreDestroy 不是用于依赖注入,而是bean 的生命周期。类似于 init-method(InitializeingBean) destory-method(DisposableBean)
k.@Transactional:事务注解
11.Spring的声明式事务的优缺点?
答:最大的优点就是不需要通过编程的方式管理事务,这样就不需要再业务逻辑代码中参杂事务管理的代码,只需再配置文件中做相关的事务规则声明(或通过基于@Transaction注解的方式),便可以将事务规则应用到业务逻辑中。
缺点:显然声明式事务管理要优于编程式事务管理,主要体现再没有代码的嵌入,不受代码的污染。一个普通的POJO对象,只要加上注解就可以获得完全的事务支持。和编程式事务相比,声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别。但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等。
12.如何启动注解?
答:在Spring配置文件中配置context:annotation-config/元素

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值