spring常用注解

来源:互联网 发布:工作站安装linux 编辑:程序博客网 时间:2024/06/14 12:04

为了方便以后开发中查阅和复习,整理了以下的一些常用注解

  1. 将 bean 添加到 spring 的管理
    • @Component(“bean的id”)
    • @Service(“bean的id”)
    • @Repository("bean"的id)
    • @Named(“bean的id”)【@Component的替代方案】
  2. 定义配置类
    • @Configuration
    • @Bean 告诉 Spring 被修饰的方法会返回一个对象,该对象注册到 ApplicationContext 中;
    • @Import(类名) 导入配置类
    • @ImportResource("xml配置文件名") :导入xml配置文件
    • @PropertySource("classpath:properties文件路径") 导入资源文件
    • @EnableWebMvc 启用注解驱动的Spring MVC
  3. 扫描包
    • @ComponentScan (basePackages={"包名1","包名2"})
    • @ComponentScan (basePackageClasses={a.class,b.class})
  4. 自动装配(修饰属性和 setter 方法)
    • @Autowired | @Inject | @Resource
    • 可以设置 @Autowiredrequired 属性为 false ,spring 会尝试执行装配,如果没有发现匹配的 bean ,Spring 将会让这个 bean 处于未装配状态;(可能引发空指针异常)
  5. @Conditional(实现了Condition接口的类)
    重写该类的 matches 方法,返回 true 创建被修饰的 bean ,否则不创建;

  6. @Primary 设置被修饰 bean 为首选bean,当有多个 bean 实现了同一个接口时,spring 在注入的时候可能会产生 NoUniqueBeanDefinitionException 的异常,此时设置该注解标记为首选bean

  7. @Qualifier(“指定需要注入的bean的id”) 与@Autowired 和 @Inject 协同使用;
  8. @Scope(value=bean的作用域,proxyMode=代理方式)

    • proxyMode 主要解决讲会话或请求作用域的 bean 注入到单例 bean 中所遇到的问题(详见spring实战p87页)
    • ScopedProxyMode.TARGET_CLASS:使用CGLib代理;
    • ScopedProxyMode.INTERFACES:使用接口代理
  9. @Aspect:定义切面

  10. @Before :通知方法会在目标方法调用之前执行
  11. @AfterReturning 通知方法会在目标方法返回后调用
  12. @AfterThrowing :通知方法会在目标方法抛出异常后调用
  13. @Around 通知方法会将目标方法封装起来,可以获取 ProceedingJoinPoint 对象
  14. @After:通知方法会在目标方法返回或抛出异常后调用
  15. @DeclareParents():为代理对象引入新方法
  16. @Pointcut:可以在一个@AspectJ切面内定义一个可重用的切点
    • 表达式:exection(*【返回值类型】 方法所属的类.方法名(..【使用任意参数】))
    • AspectJ 指示器
      • args(): 限制连接点匹配参数为指定类型的执行方法;
      • @args():限制连接点匹配参数由指定注解标注的执行方法;
      • execution():用于匹配是连接点的执行方法;
      • this():限制连接点匹配 AOP 代理的 bean 引用为指定类型的类
      • target:限制连接点匹配目标对象为指定类型的类
      • @target():限制连接点匹配特定的执行对象,这些对象对应的类要具有指定类型的注解;
      • within():限制连接点匹配指定的类型;
      • @within():限制连接点匹配指定注解所标注的类型;
      • @annotation:限制匹配带有指定注解的连接点;
        1. @Controller 声明为一个控制器
        2. @ResponseBody
        3. @RequestMapping
        4. @RestController
        5. @RequestParam
        6. @RequestBody
        7. @PathVariable
        8. @RequestHeader
        9. @CookieValue
        10. @SessionAttributes
        11. @ModelAttribute
        12. @ResponseStatus:将异常映射为特定的状态码
        13. @ExceptionHandler :在方法上添加该注解,当抛出异常时,将会委托该方法来处理
        14. @ControllerAdvice 本身已经使用了@Component,会自动被组件扫描到,其最实用的场景就是将所有的 @ExceptionHandler 方法收集到一个类中,这样所有控制器的异常就能在一个地方进行一致处理

这里写图片描述