互联网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博客

相关推荐
一元咖啡15 分钟前
SpringCloud Gateway转发请求到同一个服务的不同端口
spring·spring cloud·gateway
儿时可乖了22 分钟前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
ruleslol23 分钟前
java基础概念37:正则表达式2-爬虫
java
xmh-sxh-131440 分钟前
jdk各个版本介绍
java
天天扭码1 小时前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
程序猿进阶1 小时前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露
FIN技术铺1 小时前
Spring Boot框架Starter组件整理
java·spring boot·后端
小曲程序1 小时前
vue3 封装request请求
java·前端·typescript·vue