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

目录

​编辑

4、注解

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

[4.2、如何在 spring 中启动注解装配?](#4.2、如何在 spring 中启动注解装配?)

[4.3、Component, Controller, Repository,Service 有何区别?](#4.3、Component, Controller, Repository,Service 有何区别?)

[4.4、Required 注解有什么用?](#4.4、Required 注解有什么用?)

[4.5、Autowired 注解有什么用?](#4.5、Autowired 注解有什么用?)

[4.6、Qualifier 注解有什么用?](#4.6、Qualifier 注解有什么用?)

[4.7、RequestMapping 注解有什么用?](#4.7、RequestMapping 注解有什么用?)

5、数据访问

[5.1、spring DAO 有什么用?](#5.1、spring DAO 有什么用?)

[5.2、列举 Spring DAO 抛出的异常。](#5.2、列举 Spring DAO 抛出的异常。)

[5.3、spring JDBC API 中存在哪些类?](#5.3、spring JDBC API 中存在哪些类?)

[5.4、使用 Spring 访问 Hibernate 的方法有哪些?](#5.4、使用 Spring 访问 Hibernate 的方法有哪些?)

[5.5、列举 spring 支持的事务管理类型](#5.5、列举 spring 支持的事务管理类型)

[5.6、spring 支持哪些 ORM 框架](#5.6、spring 支持哪些 ORM 框架)


4、注解

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

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

例如:

复制代码
@Configuration
public class StudentConfig {
    @Bean
    public StudentBean myStudent() {
        return new StudentBean();
    }
}

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

默认情况下,Spring 容器中未打开注解装配。因此,要使用基于注解装配,我们必须通过配置 <context:annotation-config/> 元素在 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。

示例:

复制代码
public class Employee {
    private String name;
    @Required
    public void setName(String name){
        this.name=name;
    }
    public string getName(){
        return name;
    }
}

4.5、Autowired 注解有什么用?

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

复制代码
public class Employee {
    private String name;
    @Autowired
    public void setName(String name) {
        this.name=name;
    }
    public string getName(){
        return name;
    }
}

4.6、Qualifier 注解有什么用?

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

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

Employee.java

复制代码
public class Employee {
    private String name;
    @Autowired
    public void setName(String name) {
        this.name=name;
    }
    public string getName() {
        return name;
    }
}

EmpAccount.java

复制代码
public class EmpAccount {
    private Employee emp;
    @Autowired
    @Qualifier(emp1)
    public void showName() {
        System.out.println("Employee name : "+emp.getName);
    }
}

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博客

相关推荐
MacroZheng3 分钟前
还在用WebSocket实现即时通讯?试试MQTT吧,真香!
java·spring boot·后端
稚辉君.MCA_P8_Java18 分钟前
豆包 Java的23种设计模式
java·linux·jvm·设计模式·kubernetes
tanyongxi6618 分钟前
C++ 特殊类设计与单例模式解析
java·开发语言·数据结构·c++·算法·单例模式
遗憾皆是温柔21 分钟前
24. 什么是不可变对象,好处是什么
java·开发语言·面试·学习方法
midsummer_woo26 分钟前
基于springboot的IT技术交流和分享平台的设计与实现(源码+论文)
java·spring boot·后端
Peter(阿斯拉)37 分钟前
[Java性能优化]_[时间优化]_[字符串拼接的多种方法性能分析]
java·性能优化·stringbuilder·string·字符串拼接·stringbuffer·时间优化
qq_三哥啊1 小时前
【IDEA】设置Debug调试时调试器不进入特定类(Spring框架、Mybatis框架)
spring·intellij-idea·mybatis
水痕012 小时前
gin结合minio来做文件存储
java·eureka·gin
别惹CC2 小时前
Spring AI 进阶之路01:三步将 AI 整合进 Spring Boot
人工智能·spring boot·spring
寒士obj2 小时前
Spring事物
java·spring