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

相关推荐
爱上语文13 分钟前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
荆州克莱15 分钟前
springcloud整合nacos、sentinal、springcloud-gateway,springboot security、oauth2总结
spring boot·spring·spring cloud·css3·技术
serve the people17 分钟前
springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
java·spring boot·后端
qmx_071 小时前
HTB-Jerry(tomcat war文件、msfvenom)
java·web安全·网络安全·tomcat
为风而战1 小时前
IIS+Ngnix+Tomcat 部署网站 用IIS实现反向代理
java·tomcat
技术无疆3 小时前
快速开发与维护:探索 AndroidAnnotations
android·java·android studio·android-studio·androidx·代码注入
懒洋洋的华3696 小时前
消息队列-Kafka(概念篇)
分布式·中间件·kafka
架构文摘JGWZ6 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
拾光师7 小时前
spring获取当前request
java·后端·spring
aPurpleBerry7 小时前
neo4j安装启动教程+对应的jdk配置
java·neo4j