1、什么是Spring?
Spring是一个开源的轻量级的Java开发框架,它是很多模块的集合,使用这些模块可以很方便的协助我们开发。这些模块是:核心容器、数据访问/集成、Web、AOP(面向切面编程)、工具、消息和测试模块。比如:Beans组件和Context组件是实现IOC和依赖注入的基础,AOP组件用来实现面向切面编程。
2、使用Spring框架有什么好处呢?
1. 控制反转:Spring通过控制反转实现了松散耦合,对象给出他们的依赖,而不是创建或查找依赖的对象们。
2.面向切面编程(AOP):Spring支持面向切面编程,并且把业务逻辑和系统服务分开。(spring提供面向切面编程,可以很方便的实现对程序进行权限拦截和运行监控等功能)
3. 事务管理:Spring提供一个持续的事务管理接口,提供声明式事务和编程式事务。
4.方便程序的测试,spring 对junit4支持,可以通过注解方便的测试spring 程序
5.方便集成各种优秀的框架()
6.MVC框架:Spring的WEB框架是个精心设计的框架,是WEB框架的一个很好的替代品。
3、Spring的控制反转(IoC)是什么?
控制反转(Inversion Of Control,缩写为IOC)是一个重要的面向对象编程的法则来削减程序的耦合问题,也是spring框架的核心。
应用控制反转,对象在被创建的时候,由一个调控系统内的所有对象的外界实体,将其所依赖的对象的引用,传递给它。
也可以说,依赖被注入到对象中。
所以,控制反转是关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。
另外,控制反转一般分为两种类型,依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。
依赖注入应用比较广泛。
4、IOC与new对象有什么区别吗?
我:这就是正转与反转的区别。传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转。而反转则是容器来帮助我们创建并注入依赖对象。
5、IOC有什么优缺点吗?
优点:IOC实现了组件之间的解耦,提高程序的灵活性和可维护性。
缺点:对象生成因为是反射编程,在效率上有些损耗。
但相对于IOC提高的维护性和灵活性来说,这点损耗是微不足道的,除非某对象的生成对效率要求特别高。
6、说下对IOC容器的理解?
在每个框架中都有个容器的概念,所谓的容器就是将常用的服务封装起来,然后用户只需要遵循一定的规则就可以达到统一、灵活、安全、方便和快速的目的。IOC容器是具有依赖注入功能的容器,负责实例化、定位、配置应用程序中的对象以及建立这些对象间的依赖。
7、IOC容器是怎么工作的?
8、说说Spring aop的了解。
Aop(面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的扩展性和可维护性。
9、Spring中的Bean的生命周期

① 通过构造器或工厂方法创建bean实例
② 为bean的属性设置值和对其他bean的引用
③ 调用bean的初始化方法
④ bean可以使用了
⑤ 当容器关闭时,调用bean的销毁方法
10、@Component和@Bean有什么区别
1. 作用对象不同:@Component作用于类,@Bean作用于方法。
2. @Component通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中(使用@ComponentScan注解定义要扫描的路径从中找出识别了需要装配的类自动装配到spring的Bean容器中)。
@Bean注解通常是在标有该注解的方法中定义产生这个bean,@Bean告诉Spring这是某个类的实例,当我需要用它的时候还给我。
3. @Bean注解比@Component注解的自定义性更强,而且很多地方只能通过@Bean注解来注册Bean,比如第三方库中的类。
11、Spring框架中用到了哪些设计模式
1. 工厂设计模式:Spring使用工厂模式通过BeanFactory、ApplicationContext创建Bean对象。
2. 代理设计模式:Spring AOP功能的实现。
3. 单例设计模式:Spring中的Bean默认都是单例的。
4. 模板方法模式:Spring中jdbcTemplate、hibernateTemplate等以Template结尾的对数据库操作的类,就是用到了模板模式。
5. 包装器设计模式:我们的项目需要链接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。
这种模式让我们可以根据客户需求都太切换不同的数据源。
6. 观察者模式:Spring事件驱动模型就是观察者模式很经典的一个应用。
7. 适配器模式:Spring AOP的增强或通知使用到了适配器模式。
SpringMVC中也是用到了适配器模式适配Controller。
12、Spring的事务
Spring管理事务有两种方式:
1. 编程式事务:在代码中硬编码(不推荐使用)
2. 声明式事务:在配置文件中配置,声明式事务又分为两种:
基于XML的方式和基于注解的方式(推荐使用) 在项目中使用Spring的事务只需要在你需要事务的方法上加上@Transaction注解,那么这个方法就加上了事务,如果遇到异常,整个方法中的数据修改的逻辑都会被回滚掉,避免造成数据的不一致性。
网友评论