Java加pring面试题汇总

spring模块

一,什么是依赖注入,什么是控制反转(IOC),在spring中有几种依赖注入的方式

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。

把由程序代码操控的对象的调用权交给容器,通过容器实现对象组件的装配和管理。所谓的"控制反转"就是对组件对象控制权的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。

其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)

依赖注入(DI)是spring核心,依赖注入早期叫反向控制,因为spring将类主动的加载依赖的对象的任务交给了容器负责,而类只需要使用这些类就行,

类也无需关心依赖对象的具体实现,实现了松耦合,方便进行模块测试。

注入方式:

构造函数注入。

set注入。

接口注入。

二,Spring中有几种配置bean的方式

基于XML的配置

基于注解的配置

基于java的配置

三。spring中一个bean的生命周期。

创建一个bean,首先需要实例化,然后设置属性值,设置bean的name,然后统通过一系列的初始化操作,bean就可以提供使用,当容器关闭时进行析构操作销毁bean。

这是beanFactory中简单bean的装配过程,若这个bean在spring的引用上下文中,则会在初始化的过程中,再调用一下setApplicationContext方法。

四,spring bean的作用。

spring中bean的作用域默认为单例的,singleton 。

prototype,与singleton相反,prototype是多例的,他为每一个bean请求单独创建一个实例

五,spring自动装配的几种方式

1.no,spring 的默认装配方式,在该方式下,spring的自动装配功能是关闭的。

2.byName:spring会自动寻找beanId与实例对象名称相同的的配置bean并自动注入,若没有则报错。

3,.byType:spring会自动寻找与实例对象类型相同的配置bean并自动注入,若没有则报错

4.constructor :构造器的自动装配和 byType 模式类似,但是仅仅适用于与有构造器相同参数的 bean ,如果在容器中没有找到与构造器参数类型一致的 bean ,那么将会抛出异常 。

5.autodetect:spring会自动测试构造器自动装配或者 byType 类型的自动装配

六,说说BeanFactory和applicationContext的区别

beanfactory是底层的实例化接口,他只能提供简单的注入的功能,applicationContext则更多的提供了企业级的服务

两者的区别:其中BeanFactory是延迟加载,也就是说知道代码中调用了getBean,bean才会被spring装配,

而applicationContext则在项目启动时,就会装载所有的bean。当然,applicationContext它还可以为 Bean 配置 lazy-init=true 来让 Bean 延迟实例化。

延迟实例化的优缺点

优点:启动时占用资源较少,对于占用资源相对较多的应用比较有优势。

缺点:速度会相对来说慢一些 。 而且有可能会出现空指针异常的错误,并且在项目启动时就加载bean方便更早的查找出bean的配置问题。

web应用推荐启动时就把所有的bean都给加载了。

七.spring 管理事务的方式

编程式事务

声明式事务

其中声明式事务又被分为两类。

基于xml的声明式事务

基于注解的声明式事务

八,spring中的代理方式有哪些

1,若被代理对象是一个借口,则使用jdk中的java.long.reflect.proxy代理,生成实现它的实现类。

优点。因为使用接口,所以使系统更加松耦合

缺点。需要为每一个代理目标编写借口

2.若代理对象是一个java类,则使用 CGLIB 库生成目标对象的子类 。

优点。不需要接口的存在

缺点。松散耦合度没有使用接口的好

九,IOC容器的初始化过程

1.rescourse定位。

2.载入

3.注册

十,AOP的实现原理:动态代理,区别参考第八条

十一,spring框架的事务管理的优点,支持声明式事务。

总结:

Spring框架优点:

方便解耦,简化开发:

Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理(代码没有入侵性)

1.AOP编程的支持:

Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能(便于功能扩展)

2.声明式事务的支持:

只需要通过配置就可以完成对事务的管理,而无需手动编程

3.方便程序的测试:

Spring对Junit4支持,可以通过注解方便的测试Spring程序

方便集成各种优秀框架:

java基础模块

原文地址:https://www.cnblogs.com/jinsheng1027/p/11615503.html

时间: 2024-10-24 01:47:47

Java加pring面试题汇总的相关文章

2019年高级Java程序员面试题汇总

目录 JDK Dubbo Zookeeper Strut2 Spring系列 Redis系列 Mysql系列 Java多线程 消息中间件 线程池 事物 JVM 设计模式 其他 程序设计 基础知识 编程题 面试技术外的问题 引言:随着金九银十的到来,回首在经历了两周的跳槽求职路后,终于成功拿到offer,距今已经入职快一个月了,因此,这几天抽空将之前的面试题做了个汇总,一方面自己以后回顾学习用,一方面为大家奉送上一份秋收的福利. JDK jdk1.8版本后的新特性有哪些? 如何避免空指针异常? D

JAVA程序猿面试题汇总

(此话题将不断更新,请留意) 第一,谈谈final, finally, finalize的差别. final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承.finally是异常处理语句结构的一部分,表示总是运行.finalize是 Object类的一个方法,在垃圾收集器运行的时候会调用被回收对象的此方法,能够覆盖此方法提供垃圾收集时的其它资源回收,比如关闭文件等. 第二,Anonymous Inner Class (匿名内部类) 能否够extends(继承)其它类,能否够

Java String常见面试题汇总

String类型的面试题 1.       String是最基本的数据类型吗? 基本数据类型包括byte,int,char,long,float,double,boolean,short一共八个. Java.lang.String类是final类型的,因此不能继承,修改这个类.为了提高效率节省空间,应该用StringBuffer类. 2.       Strings="Hello";s=s+"world!";这两句代码执行后,原始的String对象中的内容变没? 没

JAVA关于Spring 面试题汇总

1 Spring 框架有哪些主要模块? 截止到目前Spring 框架已集成了 20 多个模块 . 这些模块主要被分如下图所示的核心容器 . 数据访问 / 集成 .Web.AOP (面向切面编程) . 工具 . 消息和测试模块 . 2 什么是依赖注入?什么是控制反转(IOC)? 在 Spring 中,有几种依赖注入方式? 依赖注入是在编译阶段尚未知所需的功能是来自哪个的类的情况下,将其他对象所依赖的功能对象实例化的模式. 在传统的编程方式中,业务逻辑的流程是由应用程序中的早已被设定好关联关系的对象

2019年JAVA最常见面试题汇总

java基础以及多个"比较"1.Collections.sort排序内部原理在Java 6中Arrays.sort()和Collections.sort()使用的是MergeSort,而在Java 7中,内部实现换成了TimSort,其对对象间比较的实现要求更加严格2.hashMap原理,java8做的改变从结构实现来讲,HashMap是数组+链表+红黑树(JDK1.8增加了红黑树部分)实现的.HashMap最多只允许一条记录的键为null,允许多条记录的值为null.HashMap非

AJAX笔试面试题汇总

AJAX笔试面试题汇总 Javascript 1. 什么是ajax,为什么要使用Ajax(请谈一下你对Ajax的认识) 什么是ajax: AJAX是“Asynchronous JavaScript and XML”的缩写.他是指一种创建交互式网页应用的网页开发技术. Ajax包含下列技术: 基于web标准(standards-based presentation)XHTML+CSS的表示: 使用 DOM(Document Object Model)进行动态显示及交互: 使用 XML 和 XSLT

超全!iOS 面试题汇总

超全!iOS 面试题汇总 2015-10-20 CocoaChina 作者:Job_Yang 之前看了很多面试题,感觉要不是不够就是过于冗余,于是我将网上的一些面试题进行了删减和重排,现在分享给大家.(题目来源于网络,侵删) 1. Object-c的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-c的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好

PHP常见面试题汇总(二)

PHP常见面试题汇总(二) //第51题:统计一维数组中所有值出现的次数?返回一个数组,其元素的键名是原数组的值;键值是该值在原数组中出现的次数 $array=array(4,5,1,2,3,1,2,"a","a"); $ac=array_count_values($array); /** * 输出结果: * Array( *   [4] => 1 *   [5] => 1 *   [1] => 2 *   [2] => 2 *   [3] 

JAVA软件工程师笔试试题

JAVA软件工程师笔试试题 (考试时间:120分钟 试卷分值:150分 ) 一. 逻辑推理题[10分] 1.甲.乙.丙.丁四位同学中有一位同学为海啸灾区捐款1000元,当老师询问时,他们分别这样回答: 甲:这1000元不是我捐的 乙:这1000元是丁捐的 丙:这1000元是乙捐的 丁:这1000元不是我捐的 这四人中只有一个人说了真话,由此可见这1000元是谁捐的( ).[2分] A.甲 B.乙 C.丙 D.丁 2. 甲.乙.丙三人是同一家公司的员工,他们的未婚妻A.B.C也都是这家公司的职员.