1.Spring框架优点?(面试题)

首先说一下为什么要使用Spring框架:在传统的Java开发中具有高度的耦合性,一个项目中或者一个逻辑功能的实现时,往往一个对象需要依赖很多的对象来完成自己的操作,这样就造成了两个类的依赖关系太强,改一个地方,往往牵扯很多类牵扯大量的代码。 此时Spring就被开发出来, 它可以管理对象和对象之间的依赖关系,我们不需要自己建立对象,把这部分工作全部转交给容器完成,具有低耦合,对代码没有侵略性,对服务器没有依赖性特点的框架。举个例子:我们在没有使用Spring之前,在service层引用Dao层的对象时,需要在service层new一个Dao层的对象,这样曾与层之间的依赖性就很严重。而使用Spring框架之后,只需要在xml文件中配置就可以了,至于对象是怎么创建的,关系是怎么组合的都交给了spring框架去实现。

Spring框架优点:

方便解耦,简化开发:

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

AOP编程的支持:

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

声明式事务的支持:

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

方便程序的测试:

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

方便集成各种优秀框架:

Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持

降低JavaEE API的使用难度:

Spring 对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

--------笔记

2. IOC和DI分别是什么?区别?(面试题)

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

DI:Spring通过控制反转(IOC)的技术促进了松耦合。当应用了IOC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象,是容器在对象初始化时不等对象请求就主动将依赖传递给它。

简单说就是:IoC(控制反转):本来需要你自己new对象,现在交给spring容器帮你new对象,权利从你手里反转到容器手里了

DI(依赖注入):(依赖)就是依赖spring提供的容器,(注入)类中属性的值通过容器注入进去,或者通过引用为属性注入值

通过IOC反转控制DI依赖注入完成各个层之间的注入,使得层与层之间实现完全脱耦,增加运行效率利于维护。

3.Bean的实例化方式?

1. 使用构造器实例化:

这种实例化的方式可能在开发中用到的是最多的,因为在xml文件中配置简单并且也不需要额外的工厂类来实现。

要注意的是:要实例化的类中如果有构造器的话,一定要有一个无参构造器。

2. 使用静态工厂方法实例化:

通过这种方式进行实例化就要具备两个条件:

(一)、要有工厂类及其工厂方法;(二)、工厂方法是静态的。

id是实例化的对象的名称,class是工厂类,也就实现实例化类的静态方法所属的类,factory-method是实现实例化类的静态方法。

3. 使用实例化工厂方法实例化:

这个方法和静态工厂方法不同之处在于使用该实例化方式工厂方法不需要是静态的,但是在spring的配置文件中需要将工厂进行配置,还需要配置bean

这里需要配置两个bean,第一个bean使用的构造器方法实例化工厂类,第二个bean中的id是实例化对象的名称,factory-bean对应的被实例化的工厂类的对象名称,也就是第一个bean的id,factory-method是非静态工厂方法。

4.Bean的属性注入方式有哪些?

1. 构造方法注入

假设我有一个User4,如下:

User4中有一个变量叫做username,我希望通过构造方法给它注入值,那我在User4中提供相应的构造方法即可,然后在Spring的配置文件中做如下配置即可:

2. set方法注入

假设我有一个User5,如下:

通过set方法注入,那么在User5中我们首先要提供set方法,然后在Spring配置文件中做如下配置即可:

3. p名称空间注入

首先,我们需要在Spring配置的bean节点中添加p名称空间,如下:

现在假设我有一个User6,如下:

User6中有一个username属性,为属性提供set方法,在配置文件中通过p名称空间进行注入:

直接在bean节点中通过p:username执行相应的值即可。

from:https://blog.csdn.net/weixin_41768263/article/details/80350779

关于Spring的笔试题(一)相关推荐

  1. 69道Java Spring 面试笔试题

    目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spri ...

  2. Java面试笔试题大汇总一(最全+详细答案)

    Java面试笔试题大汇总二(最全+详细答案)https://www.jianshu.com/p/f5120f1b75be Java面试笔试题大汇总三(最全+详细答案)https://www.jians ...

  3. Java面试笔试题大汇总三(最全+详细答案)

    Java面试笔试题大汇总一(最全+详细答案):https://www.jianshu.com/p/73b6b3d35676 Java面试笔试题大汇总二(最全+详细答案)https://www.jian ...

  4. java笔试题_Java面试才到笔试就没有然后了?快来签收,高频笔试57题及解答

    前言 很多人面试之前,可能没有在互联网公司工作过或者说工作过但年头较短,不知道互联网公司技术面试都会问哪些问题? 再加上可能自己准备也不充分,去面试没几个回合就被面试官几个问题打蒙了,甚至笔试都过不了 ...

  5. Java学习资料汇总(JavaSE+JavaEE+数据库+框架+笔试题+面试题)

    在写下这篇文章的时候,我还在找工作.理解每一个真正对编程感兴趣的小伙伴的转行不易,于是就把自己这几个月搜索到的学习资料一一分享给大家. 3.数据库 MySQL5.7 Reference Manual ...

  6. java中级职称考试试题_Java中级开发工程师笔试题及答案2016

    Java中级开发工程师笔试题及答案2016 java中级工程师考试试题你做了吗?下面随yjbys小编一起来看看最新Java中级开发工程师笔试题及答案,仅供考生参考! 1) 描述Web Service的 ...

  7. java笔试题_公司真题 | 用友2018秋招Java笔试题(四)

    公司真题 | 用友2018秋招Java笔试题(三)答案: 1.正确答案 A B 2.正确答案 A 3.正确答案 D 4.正确答案 B 5.正确答案 A E 6.正确答案 B 7.正确答案 C D 8. ...

  8. java xml 表达式语言_中级Java开发工程师笔试题

    JAVA笔试题 1) 描述Web Service的用途和调用方式的语言是(B). (选择一项) a) HTML b) WSDL c) JAVA d) XML 2) 在Web技术中,"无刷新& ...

  9. 金九银十!2021阿里+头条+腾讯等大厂Java笔试题分享

    前言 时至今日, Spring在Java生态系统与就业市场上,面试出镜率之高,投产规模之广,无出其右.随着技术的发展,Spring从往日的IoC框架,已发展成Cloud Native基础设施,衍生出大 ...

最新文章

  1. 查看服务器硬盘负载——判断硬盘是否为瓶颈
  2. 5G NR — RAN 的技术演进方向
  3. app每次更新版本时调用js代码提示用户下载更新
  4. oracle 查看表被谁删了_【分享】Oracle 常用运维命令大全
  5. XML file does not appear to have any style information associated with it. XHTML程序出现这个错误
  6. scala入门-05继承类(extends)的使用
  7. mybatis之动态SQL操作之查询
  8. chimerge算法matlab实现,有监督的卡方分箱算法
  9. 查看linux中shell的几种方法汇总
  10. Linux基本服务命令
  11. koa2 mysql sequelize_使用nodejs-koa2-mysql-sequelize-jwt 实现项目api接口
  12. 未来教育计算机二级第十八套ppt,未来教育.ppt
  13. 申请Freenom免费顶级域名的正确做法
  14. 2021年中式烹调师(初级)模拟考试系统及中式烹调师(初级)实操考试视频
  15. EventBus的基本使用
  16. springMVC的生命周期
  17. BootstrapTable去掉表格与分页的空白
  18. c语言月份判断季节 switch,C语言编程基础(7页)-原创力文档
  19. 怎么让一天有36小时
  20. Lifecycle 使用与源码分析

热门文章

  1. 关于mybatis里面的Executor--转载
  2. 用 Java 技术创建 RESTful Web 服务--转载
  3. Open quote is expected for attribute {1} associated with an element type name.
  4. mina与spring集成(翻译)
  5. 【Python】写文件个性化设置模块Python_Xlwt练习
  6. 效率达CPU一万倍、内含800万神经元:英特尔发布神经形态芯片超算
  7. 逃离美股!瑞信给出了11个理由
  8. C++五子棋(一)——开发环境
  9. 复习笔记(一)——C++基础
  10. 隐藏tomcat页面异常显示的版本信息