什么是基于 Java 的 Spring 注解配置?

185 阅读3分钟

给一些注解的例子 基于 Java 的配置,允许你在少量的 Java 注解的帮助下,进行你的大部分 Spring 配置而非通过 XML 文件。 以@Configuration 注解为例,它用来标记类可以当做一个 bean 的定义,被 Spring IOC 容器使用。 另一个例子是@Bean 注解,它表示此方法将要返回一个对象,作为一个 bean 注册 进 Spring 应用上下文。

@Configuration public class StudentConfig { 
  @Bean 
  public StudentBean myStudent() { 
  return new StudentBean();
  } 
}

怎样开启注解装配?

注解装配在默认情况下是不开启的,为了使用注解装配,我们必须在 Spring 配 置文件中配置 元素。

@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。

@Required 注解有什么作用 ?

这个注解表明 bean 的属性必须在配置的时候设置,通过一个 bean 定义的显式的 属性值或通过自动装配,若@Required 注解的 bean 属性未被设置,容器将抛出 BeanInitializationException. 示例:

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

@Autowired 注解有什么作用?

@Autowired 默认是按照类型装配注入的,默认情况下它要求依赖对象必须存在 (可以设置它 required 属性为 false)。@Autowired 注解提供了更细粒度的控 制,包括在何处以及如何完成自动装配。它的用法和@Required 一样,修饰 setter 方法、构造器、属性或者具有任意名称和/或多个参数的 PN 方法。

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

@Autowired 和@Resource 之间的区别

@Autowired 可用于:构造函数、成员变量、Setter 方法

@Autowired 和@Resource 之间的区别

• @Autowired 默认是按照类型装配注入的,默认情况下它要求依赖对象必须 存在(可以设置它 required 属性为 false)。

• @Resource 默认是按照名称来装配注入的,只有当找不到与名称匹配的 bean 才会按照类型来装配注入。

@Qualifier 注解有什么作用

当您创建多个相同类型的 bean 并希望仅使用属性装配其中一个 bean 时,您可 以使用@Qualifier 注解和 @Autowired 通过指定应该装配哪个确切的 bean 来 消除歧义。 @RequestMapping 注解有什么用? @RequestMapping 注解用于将特定 HTTP 请求方法映射到将处理相应请求的控制 器中的特定类/方法。此注释可应用于两个级别:

• 类级别:映射请求的 URL

• 方法级别:映射 URL 以及 HTTP 请求方法