当前位置: 首页 > news >正文

互联网Java工程师面试题·Spring篇·第七弹

目录

36、什么是基于 Java 的 Spring 注解配置? 给一些注解的例子.

37、什么是基于注解的容器配置?

38、怎样开启注解装配?

39、Required 注解

40、Autowired 注解

41、Qualifier 注解

42、在 Spring 框架中如何更有效地使用 JDBC?

43、JdbcTemplate

44、Spring 对 DAO 的支持

45、使用 Spring 通过什么方式访问 Hibernate?

46、Spring 支持的 ORM

47.如何通过HibernateDaoSupport将Spring和Hibernate结合起来?

48、Spring 支持的事务管理类型

49、Spring 框架的事务管理有哪些优点?

50、你更倾向用那种事务管理类型?

51、解释 AOP

52、Aspect 切面

52、在 Spring AOP 中,关注点和横切关注的区别是什么?

54、连接点

55、通知

56、切点

57、什么是引入?

58、什么是目标对象?

59、什么是代理?

60、有几种不同类型的自动代理?


36、什么是基于 Java 的 Spring 注解配置? 给一些注解的例子.

        基于 Java 的配置,允许你在少量的 Java 注解的帮助下,进行你的大部分 Spring配置而非通过 XML 文件。

        以Configuration 注解为例,它用来标记类可以当做一个 bean 的定义,被Spring IOC 容器使用。另一个例子是@Bean 注解,它表示此方法将要返回一个对象,作为一个 bean 注册进 Spring 应用上下文。


37、什么是基于注解的容器配置?

        相对于 XML 文件,注解型的配置依赖于通过字节码元数据装配组件,而非尖括号的声明。

        开发者通过在相应的类,方法或属性上使用注解的方式,直接组件类中进行配置,而不是使用 xml 表述 bean 的装配关系。


38、怎样开启注解装配?

        注解装配在默认情况下是不开启的,为了使用注解装配,我们必须在 Spring 配置文件中配置 context:annotation-config/元素。


39、Required 注解

        这个注解表明 bean 的属性必须在配置的时候设置,通过一个 bean 定义的显式的属性值或通过自动装配,若Required 注解的 bean 属性未被设置,容器将抛出BeanInitializationException。


40、Autowired 注解

        Autowired 注解提供了更细粒度的控制,包括在何处以及如何完成自动装配。它的用法和Required 一样,修饰 setter 方法、构造器、属性或者具有任意名称和/或多个参数的 PN 方法。


41、Qualifier 注解

        当有多个相同类型的 bean 却只有一个需要自动装配时,将Qualifier 注解和Autowire 注解结合使用以消除这种混淆,指定需要装配的确切的 bean。


42、在 Spring 框架中如何更有效地使用 JDBC?

        使用 SpringJDBC 框架,资源管理和错误处理的代价都会被减轻。所以开发者只需写 statements 和 queries 从数据存取数据,JDBC 也可以在 Spring 框架提供的模板类的帮助下更有效地被使用,这个模板叫 JdbcTemplate (例子见这里here)


43、JdbcTemplate

        JdbcTemplate 类提供了很多便利的方法解决诸如把数据库数据转变成基本数据类型或对象,执行写好的或可调用的数据库操作语句,提供自定义的数据错误处理。


44、Spring 对 DAO 的支持

        Spring 对数据访问对象(DAO)的支持旨在简化它和数据访问技术如 JDBC,Hibernate or JDO 结合使用。这使我们可以方便切换持久层。编码时也不用担心会捕获每种技术特有的异常。


45、使用 Spring 通过什么方式访问 Hibernate?

在 Spring 中有两种方式访问 Hibernate:

(1)控制反转 Hibernate Template 和 Callback。

(2)继承 HibernateDAOSupport 提供一个 AOP 拦截器。


46、Spring 支持的 ORM

Spring 支持以下 ORM:

Hibernate

iBatis

JPA (Java Persistence API)

TopLink

JDO (Java Data Objects)

OJB


47.如何通过HibernateDaoSupport将Spring和Hibernate结合起来?

用 Spring 的 SessionFactory 调用 LocalSessionFactory。集成过程分三步:

(1)配置 the Hibernate SessionFactory。

(2)继承 HibernateDaoSupport 实现一个 DAO。

(3)在 AOP 支持的事务中装配。


48、Spring 支持的事务管理类型

Spring 支持两种类型的事务管理:

编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。

声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和 XML 配置来管理事务。


49、Spring 框架的事务管理有哪些优点?

它为不同的事务 API 如 JTA,JDBC,Hibernate,JPA 和 JDO,提供一个不变的编程模式。

它为编程式事务管理提供了一套简单的 API 而不是一些复杂的事务 API

如:

    它支持声明式事务管理。

    它和 Spring 各种数据访问抽象层很好得集成。


50、你更倾向用那种事务管理类型?

        大多数 Spring 框架的用户选择声明式事务管理,因为它对应用代码的影响最小,因此更符合一个无侵入的轻量级容器的思想。声明式事务管理要优于编程式事务管理,虽然比编程式事务管理(这种方式允许你通过代码控制事务)少了一点灵活性。


51、解释 AOP

        面向切面的编程,或 AOP, 是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事务管理。


52、Aspect 切面

        AOP 核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一组 API 提供横切功能。比如,一个日志模块可以被称作日志的 AOP 切面。根据需求的不同,一个应用程序可以有若干切面。在 Spring AOP 中,切面通过带有Aspect 注解的类实现。


52、在 Spring AOP 中,关注点和横切关注的区别是什么?

        关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的一个功能。

        横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个用,比如日志,安全和数据传输,几乎应用的每个模块都需要的功能。因此这些都属于横切关注点。


54、连接点

        连接点代表一个应用程序的某个位置,在这个位置我们可以插入一个 AOP 切面,它实际上是个应用程序执行 Spring AOP 的位置。


55、通知

通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过SpringAOP 框架触发的代码段。

Spring 切面可以应用五种类型的通知:

before:前置通知,在一个方法执行前被调用。

after: 在方法执行之后调用的通知,无论方法执行是否成功。

after-returning: 仅当方法成功完成后执行的通知。

after-throwing: 在方法抛出异常退出时执行的通知。

around: 在方法执行之前和之后调用的通知。


56、切点

切入点是一个或一组连接点,通知将在这些位置执行。可以通过表达式或匹配的方式指明切入点。


57、什么是引入?

引入允许我们在已存在的类中增加新的方法和属性。


58、什么是目标对象?

被一个或者多个切面所通知的对象。它通常是一个代理对象。也指被通知(advised)对象。


59、什么是代理?

代理是通知目标对象后创建的对象。从客户端的角度看,代理对象和目标对象是一样的。


60、有几种不同类型的自动代理?

BeanNameAutoProxyCreator

DefaultAdvisorAutoProxyCreator

Metadata autoproxying


要想了解更多:

千题千解·Java面试宝典_时光の尘的博客-CSDN博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Qt6,使用 UI 界面完成命令执行自动化的设计
  • python爬取Web of science论文信息
  • 不学51直接学stm32可以吗?学stm32需要哪些基础?
  • 视频批量混剪剪辑软件类似剪映设计一个模板后, 视频,图片,文字,转场,音频,特效都可以系统随机
  • 基于STM32+华为云IOT设计的火灾感知系统
  • React进阶之路(一)-- JSX基础、组件基础
  • tikv节点缩容下线,Tombstone状态处理 和TIDB升级
  • 机器人制作开源方案 | 管内检测维护机器人
  • 【日积月累】SpringBoot 通过注解@CacheConfig @Cacheable @CacheEvict @CachePut @Caching使用缓存
  • 使用JavaScript编写的爬虫程序
  • 公共功能测试用例
  • 持续持续集成部署-k8s-配置与存储-配置管理:Secret 的应用
  • Harbor私有仓库
  • 一键批量视频剪辑、合并,省时省力,制作专业视频
  • 基于Python OpenCV的金铲铲自动进游戏、D牌...
  • [NodeJS] 关于Buffer
  • Median of Two Sorted Arrays
  • SpiderData 2019年2月23日 DApp数据排行榜
  • spring boot 整合mybatis 无法输出sql的问题
  • text-decoration与color属性
  • 工作中总结前端开发流程--vue项目
  • 基于Android乐音识别(2)
  • 将回调地狱按在地上摩擦的Promise
  • 每天10道Java面试题,跟我走,offer有!
  • 前端技术周刊 2019-01-14:客户端存储
  • 在Mac OS X上安装 Ruby运行环境
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • FaaS 的简单实践
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​TypeScript都不会用,也敢说会前端?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • $.each()与$(selector).each()
  • (02)vite环境变量配置
  • (13)Hive调优——动态分区导致的小文件问题
  • (35)远程识别(又称无人机识别)(二)
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET 8.0 中有哪些新的变化?
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .project文件
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [5] CUDA线程调用与存储器架构
  • [ANT] 项目中应用ANT
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C#]winform基于opencvsharp结合Diffusion-Low-Light算法实现低光图像增强黑暗图片变亮变清晰