java面试题《九、Spring》
1.什么是Spring?
Spring是一个轻量级的java开发框架,为了解决企业级应用开发的业务逻辑和其他各层的耦合问题,简化java开发。为开发java应用程序提供全面的基础架构支持。
2.Spring框架的核心?
Ioc容器和AOP模块。通过Ioc容器管理POJO对象以及他们之间的耦合关系;通过AOP以动态非侵入的方式增强服务。
3.Spring的优缺点是什么?
优点:(1)方便解耦,简化开发(2)Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护,交给Spring管理。(3)AOP编程的支持,方便的实现对程序进行权限拦截、运行监控的功能。(4)声明式事务支持,只需要通过配置就可以完成对事务的管理,无须手动编程。(4)方便程序的测试(5)方便集成各种优秀的框架
缺点:Spring依赖反射,反射影响性能(2)使用门槛高
4.Spring由哪些模块组成?
(1)spring core:提供了框架的基本组成部分,包括控制反转和依赖注入
(2)spring beans:提供了BeanFactory,是工厂模式的一个景点实现,Spring将管理对象成为Bean。
(3)spring cntext:构建于core封装包基础上的context封装包,提供了一种框架式的对象访问方法。
(4)spring jdbc:简化jdbc。
(5)Spring aop
(6)Spring web
(7)Spring test
5.Spring框架中都用到了哪些设计模式?
(1)工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例。
(2)单例模式:Bean默认为单例模式。
(3)代理模式:Spring的AOP功能用到了JDk的动态代理和CDLIB字节码生成技术。
(4)模板方法:用来解决代码重复的问题。
(5)观察者模式:ApplicationListener。
6.什么是Spring ioc容器?
它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。Spring IOC负责创建对象,管理对象,装配对象,配置对象,并且管理这些对象的整个生命周期。
7.Spring IOC的实现机制?
工厂模式加反射机制。
8.BeanFactory和ApplicationContext有什么区别?
都是Spring的两大核心接口,当做spring的容器,其中ApplicationContext是BeanFactory的子接口。
BeanFactory:是Spring里面最底层的接口,包含了各种Bean的定义,读取Bean的配置文档,管理Bean的加载,实例化,控制Bean的生命周期,维护Bean之间的依赖关系。
ApplicationContext:扩展功能(1)继承MessageSource,因此支持国际化(2)统一的资源文件访问方式(3)提供在监听器中注册bean的事件(4)同时加载多个配置文件(5)载入多个上下文,使得每一个上下文都专注于一个特定的层次,比如应用的web层。
9.什么是Spring的依赖注入?
组件之间的依赖关系由容器在应用系统运行期来决定,也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。
10.依赖注入的实现方式?
接口注入、构造器注入、setter方法注入
11.什么是Spring Beans?
被Spring IOC容器初始化、装配和管理的java对象。
12.Spring由几种配置bean方式?
XML配置文件、基于注解的配置、基于java的配置。
13.Spring支持哪几种bean的作用域?
singleton、prototype、request、session、gloable-session
14.Spring框架中的单例bean是线程安全的吗?
不是,把bean的作用域singleton改为prototype
15.解释Spring框架中bean的生命周期。
(1)Spring对bean进行实例化
(2)Spring将值和bean的引用注入到bean对应的属性中
(3)如果bean类实现了BeanNameAware的接口,工厂调用Bean的setBeanName()方法,传递bean的ID值。
(4)如果bean类实现beanFactoryAware接口,工厂调用setBeanFactory方法传入工厂自身。
.....
16.使用@Autowired注解自动装配的过程?
(1)在Spring配置文件中进行配置<context:annotation-config>
(2)在启动spring ioc时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器
(3)当容器扫描到@Autowired、@Resource或者@inject时,就会在ioc容器自动查找需要的bean
17.可以在Spring中注入一个null和一个空字符串吗?
可以。
18.常用注解及含义
@Component:将java类标记为bean
@Controller:标记为Spring Web MVC控制器
@Service:组件注解
@Repository:标记在DAO层
@Required:bean的属性必须在配置的时候设置
@Autowired:按照类型装配注入的
@Resource:默认按照名称装配注入的
@RequestMapping:将特定HTTP请求方法映射到将处理相应请求的控制器中的特定类、方法
19.什么是AOP?
面向切面编程,作为面向对象的一种补充。可用于权限认证、日志、事务处理。
浙公网安备 33010602011771号