美文网首页Spring Boot程序员Java开发
Spring Boot从入门到精通-注解详解

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

作者: 我的小熊不见了 | 来源:发表于2019-01-16 19:08 被阅读13次

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

    • 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代码可以检查类型安全。
    • @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从入门到精通-注解详解

        本文链接:https://www.haomeiwen.com/subject/vesudqtx.html