Java面试-Spring注解系列

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

不使用 XML 来描述 bean 装配,开发人员通过在相关的类,方法或字段声明上 使用注解将配置移动到组件类本身。它可以作为 XML 设置的替代方案。例如:

Spring 的 Java 配置是通过使用 @Bean @Configuration 来实现。 

@Bean 注解扮演与 元素相同的角色。 @Configuration 类允许通过简单地调 用同一个类中的其他 @Bean 方法来定义 bean 间依赖关系。

@Configuration
public class StudentConfig {

   @Beanpublic 
   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.java4.7、@RequestMapping 注解有什么用?

@RequestMapping 注解用于将特定 HTTP 请求方法映射到将处理相应请求的

控制器中的特定类/方法。此注释可应用于两个级别: 类级别:映射请求的 URL 方法级别:映射 URL 以及 HTTP 请求方法

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章