Spring及SpringBoot中的注解

CKeenSpringSpringJ2EE约 922 字大约 3 分钟

作者:程序员CKeen
博客:http://ckeen.cnopen in new window

长期坚持做有价值的事!积累沉淀,持续成长,升维思考!希望把编码作为长期兴趣爱好😄


1.Spring中的注解

  1. @Component注解

    用于标识一个类为 Spring 组件,让 Spring 自动扫描并注册为 bean。

  2. @Autowired注解

    用于自动装配 bean,可以标注在字段、构造函数、Setter 方法上。

  3. @Controller注解

    用于标识控制器,让 Spring 自动扫描并注册为 bean。

  4. @Service注解

    用于标识服务,让 Spring 自动扫描并注册为 bean。

  5. @Repository注解

    数据访问层的组件,让 Spring 自动扫描并注册为 bean。

  6. @RequestMapping注解

    用于映射 HTTP 请求到控制器的处理方法。

  7. @PathVariable注解

    用于将 URL 中的模板变量绑定到方法的参数上。

  8. @RequestParam注解

    用于将请求参数绑定到方法的参数上。

  9. @ResponseBody注解

    用于将方法的返回值直接作为 HTTP 响应的内容返回。

  10. @Configuration注解

    用于标识一个类为配置类,可以使用 @Bean 注解定义 bean。

  11. @Value注解

    用于注入属性值。

  12. @Transactional注解

    用于标识事务管理的方法或类。

2.SpringBoot中的注解

  1. @SpringBootApplication 注解

    查看源码可发现,@SpringBootApplication是一个复合注解,包含了@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan这三个注解。

  2. @SpringBootConfiguration

    标注当前类是配置类,这个注解继承自@Configuration。并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名。

  3. @EnableAutoConfiguration

    SpringBoot通过@EnableAutoConfiguration注解开启自动配置,加载spring.factories文件中注册的各种AutoConfiguration,当某个AutoConfiguration类满足@Conditional指定的生效条件时,实例化该AutoConfiguration类中定义的Bean,注入到Spring容器中,就可以完成依赖框架的自动配置。

    • 需要和@Configuration配合使用;
    • 用于实例化依赖包中的对象;
    • 一般需要在META-INF/spring.factories中进行配置;
    • 经常用于自定义的starter中。

    @EnableAutoConfiguration = @AutoConfigurationPackage + @Import({AutoConfigurationImportSelector.class})

  4. @ServletComponentScan

    Servlet、Filter、Listener 可以直接通过 @WebServlet、@WebFilter、@WebListener 注解自动注册,这样通过注解servlet ,拦截器,监听器的功能而无需其他配置,所以这次相中使用到了filter的实现,用到了这个注解。

  5. @ImportResource(locations={})

    导入其他xml配置文件,需要标准在主配置类上。导入property的配置文件

  6. @PropertySource

    指定文件路径,这个相当于使用spring的标签来完成配置项的引入。

条件注解

  1. @ConditionalOnBean

    是否存在某个类或某个名字的Bean,例如@ConditionalOnBean( value= UserService.class)表示如果存在UserService的Bean则导入, 也可以使用name去识别bean

  2. @ConditionalOnMissingBean

    是否缺失某个类或某个名字的Bean。也可以使用value和name。 如果不配置参数value和name,spring会去推断一个类型

  3. @ConditionalOnSingleCandidate

    是否符合指定类型的Bean只有一个

  4. @ConditionalOnClass

    是否存在某个类

  5. @ConditionalOnMissingClass

    是否缺失某个类

  6. @ConditionalOnExpression

    指定表达式返回的是true还是false

  7. @ConditionalOnJava

    判断java的版本

  8. @ConditionalOnJndi

    JNDI指定的资源是否存在

  9. @ConditionalOnWebApplication

    当前应用是否为一个web应用

  10. @ConditionalOnNotWebApplication

    当前应用是否不是一个web应用

  11. @ConditionalOnProperty

    Environment中是否存在某个属性

  12. @ConditionalOnResource

    指定的资源是否存在