Spring Boot从入门到精通-注解详解

时间:2022-06-21
本文章向大家介绍Spring Boot从入门到精通-注解详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

说起注解,就不得不说到三个最基本的注解:

  • Target:声明注解用于什么地方,用的最多的是注解在类上(@Target({ElementType.TYPE}))和方法(@Target({ElementType.METHOD}))上。
  • Retention:定义该注解的生命周期 RetentionPolicy这个枚举类型的常量描述保留注释的各种策略,它们与元注释(@Retention)一起指定注释要保留多长时间。
public enum RetentionPolicy {
    /**
     * Annotations are to be discarded by the compiler.
     */
    SOURCE,

    /**
     * Annotations are to be recorded in the class file by the compiler
     * but need not be retained by the VM at run time.  This is the default
     * behavior.
     */
    CLASS,

    /**
     * Annotations are to be recorded in the class file by the compiler and
     * retained by the VM at run time, so they may be read reflectively.
     *
     * @see java.lang.reflect.AnnotatedElement
     */
    RUNTIME
}

-Documented:Documented注解表明这个注释是由 javadoc记录的。 以上是三个公共注解,基本上所有的注解都会继承这三个注解。

接下来是Spring Boot中常用的一些注解。

  • @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。
  • @Configuration:等同于spring的XML配置文件;使用Java代码可以检查类型安全。
  • @AutoConfigureAfter:指定在某个类被spring装载后装载。
  • @EnableAutoConfiguration:自动配置。
  • @Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。
  • @ResponseBody:表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。
  • @RestController:@ResponseBody和@Controller的合集。
  • @RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射。
  • @ComponentScan:表示将该类自动发现扫描组件。如果扫描到有@Component、@Controller、@Service、@Autowired、@Configuration等这些注解的类,并注册为Bean,可以自动收集所有的Spring组件。
  • @Inject:等价于默认的@Autowired,只是没有required属性。
  • @Service:一般用于修饰service层的组件。
  • @Repository:使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。
  • @Bean:用@Bean标注方法等价于XML中配置的bean。
  • @Scope("prototype"): 声明bean初始化类型,默认为单例。
  • @PostConstruct:初始化bean执行的方法。
  • @PreDestory:销毁bean前执行的方法。
  • @Qualifier:当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。
  • @Value:注入Spring boot application.yml配置的属性的值。
  • @ControllerAdvice:包含@Component。可以被扫描到。统一处理异常。
  • @EnableTransactionManagement:开启事务管理,确保在启动类中@component扫描到该类。
  • @Transactional:事务在service层中的使用。

以上是我们常用的一些注解的含义,当然我们也可以自定义注解。 在下一节中我们会将已经写好的接口与数据库进行交互,实现一个简单的从浏览器到数据库之间完整的交互。Spring Boot从入门到精通-数据库连接