目录
[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.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
要想了解更多: