码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 互联网Java工程师面试题·Spring篇·第三弹


    目录

    ​编辑

    4、注解

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

    4.2、如何在 spring 中启动注解装配?

    4.3、Component, Controller, Repository,Service 有何区别?

    4.4、Required 注解有什么用?

    4.5、Autowired 注解有什么用?

    4.6、Qualifier 注解有什么用?

    4.7、RequestMapping 注解有什么用?

    5、数据访问

    5.1、spring DAO 有什么用?

    5.2、列举 Spring DAO 抛出的异常。

    5.3、spring JDBC API 中存在哪些类?

    5.4、使用 Spring 访问 Hibernate 的方法有哪些?

    5.5、列举 spring 支持的事务管理类型

    5.6、spring 支持哪些 ORM 框架


    4、注解

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

            不使用 XML 来描述 bean 装配,开发人员通过在相关的类,方法或字段声明上使用注解将配置移动到组件类本身。它可以作为 XML 设置的替代方案。例如:Spring 的 Java 配置是通过使用 Bean 和 Configuration 来实现。Bean 注解扮演与 元素相同的角色。 Configuration 类允许通过简单地调用同一个类中的其他 Bean 方法来定义 bean 间依赖关系。

    例如:

    1. @Configuration
    2. public class StudentConfig {
    3. @Bean
    4. public StudentBean myStudent() {
    5. return new StudentBean();
    6. }
    7. }

    4.2、如何在 spring 中启动注解装配?

            默认情况下,Spring 容器中未打开注解装配。因此,要使用基于注解装配,我们必须通过配置 元素在 Spring 配置文件中启用它。


    4.3、Component, Controller, Repository,Service 有何区别?

    Component :这将 java 类标记为 bean。它是任何 Spring 管理组件的通用构造型。spring 的组件扫描机制现在可以将其拾取并将其拉入应用程序环境中。

    Controller :这将一个类标记为 Spring Web MVC 控制器。标有它的Bean 会自动导入到 IoC 容器中。

    Service :此注解是组件注解的特化。它不会对 Component 注解提供任何其他行为。您可以在服务层类中使用Service 而不是 Component,因为它以更好的方式指定了意图。

     Repository :这个注解是具有类似用途和功能的 Component 注解的特化。它为 DAO 提供了额外的好处。它将 DAO 导入 IoC 容器,并使未经检查的异常有资格转换为 Spring DataAccessException。


    4.4、Required 注解有什么用?

            Required 应用于 bean 属性 setter 方法。此注解仅指示必须在配置时使用bean 定义中的显式属性值或使用自动装配填充受影响的 bean 属性。如果尚未填充受影响的 bean 属性,则容器将抛出 BeanInitializationException。

    示例:

    1. public class Employee {
    2. private String name;
    3. @Required
    4. public void setName(String name){
    5. this.name=name;
    6. }
    7. public string getName(){
    8. return name;
    9. }
    10. }

    4.5、Autowired 注解有什么用?

            Autowired 可以更准确地控制应该在何处以及如何进行自动装配。此注解用于在 setter 方法,构造函数,具有任意名称或多个参数的属性或方法上自动装配bean。默认情况下,它是类型驱动的注入。

    1. public class Employee {
    2. private String name;
    3. @Autowired
    4. public void setName(String name) {
    5. this.name=name;
    6. }
    7. public string getName(){
    8. return name;
    9. }
    10. }

    4.6、Qualifier 注解有什么用?

            当您创建多个相同类型的 bean 并希望仅使用属性装配其中一个 bean 时,您可以使用Qualifier 注解和 Autowired 通过指定应该装配哪个确切的 bean来消除歧义。

    例如,这里我们分别有两个类,Employee 和 EmpAccount。在 EmpAccount中,使用Qualifier 指定了必须装配 id 为 emp1 的 bean。

    Employee.java

    1. public class Employee {
    2. private String name;
    3. @Autowired
    4. public void setName(String name) {
    5. this.name=name;
    6. }
    7. public string getName() {
    8. return name;
    9. }
    10. }

    EmpAccount.java

    1. public class EmpAccount {
    2. private Employee emp;
    3. @Autowired
    4. @Qualifier(emp1)
    5. public void showName() {
    6. System.out.println(“Employee name : ”+emp.getName);
    7. }
    8. }

    4.7、RequestMapping 注解有什么用?

            RequestMapping 注解用于将特定 HTTP 请求方法映射到将处理相应请求的控制器中的特定类/方法。此注释可应用于两个级别:

    类级别:映射请求的 URL

    方法级别:映射 URL 以及 HTTP 请求方法


    5、数据访问

    5.1、spring DAO 有什么用?

            Spring DAO 使得 JDBC,Hibernate 或 JDO 这样的数据访问技术更容易以一种统一的方式工作。这使得用户容易在持久性技术之间切换。它还允许您在编写代码时,无需考虑捕获每种技术不同的异常。


    5.2、列举 Spring DAO 抛出的异常。


    5.3、spring JDBC API 中存在哪些类?

    (1)JdbcTemplate

    (2)SimpleJdbcTemplate

    (3)NamedParameterJdbcTemplate

    (4)SimpleJdbcInsert

    (5)SimpleJdbcCall


    5.4、使用 Spring 访问 Hibernate 的方法有哪些?

    我们可以通过两种方式使用 Spring 访问 Hibernate:

    (1)使用 Hibernate 模板和回调进行控制反转

    (2)扩展 HibernateDAOSupport 并应用 AOP 拦截器节点


    5.5、列举 spring 支持的事务管理类型

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

    1、 程序化事务管理:在此过程中,在编程的帮助下管理事务。它为您提供极大的灵活性,但维护起来非常困难。

    2、声明式事务管理:在此,事务管理与业务代码分离。仅使用注解或基于 XML的配置来管理事务。


    5.6、spring 支持哪些 ORM 框架

    Hibernate、iBatis、JPA、JDO、OJB


    要想了解更多:

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

  • 相关阅读:
    Flink 集群部署
    mysql面试题8:MySQL的日志有哪些?MySQL的bin log、redo log、undo log区别和联系
    全志R128应用开发案例——中断方式驱动旋转编码器
    无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
    使用C++语言BFS实现拓扑排序,BFS和DFS实现逆拓扑排序
    Day18--登录与支付-登录-初步渲染页面的布局结构
    STL模板库笔记
    C++打怪升级(十一)- STL之list
    docker快速搭建日常应用
    css样式进行预处理
  • 原文地址:https://blog.csdn.net/MANONGDKY/article/details/133963464
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号