常用注解

331 阅读4分钟

spring常用注解

  1. 元注解
    1. @Target 描述注解的使用位置
      1. TYPE 类、接口、枚举
      2. FIELD 属性
      3. METHOD 方法等
    2. @Retention 描述注解保留的时间范围(类似于注解的生命周期)
      1. RUNTIME 运行时保留,可通过反射获取注解信息
      2. CLASS 编译时保留 默认
      3. SOURCE 源文件保留
    3. @Inherited 使被它修饰的注解具有继承性
    4. @Documented描述在使用 javadoc 工具为类生成帮助文档时是否要保留其注解信息
  2. 声明Bean的注解
    1. @Compnent
    2. @Controller 控制层
    3. @Service 业务层
    4. @Repository 数据访问层
  3. 注入bean的注解
    1. @Autowired 默认按照类型匹配,@Autowired如果需要按照名称匹配需要和@Qualifier一起使用
    2. @Qualifier 当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者,
    3. @Resource 按照名称匹配的
  4. Java配置类相关注解
    1. @Configuration 声明当前类为配置类
    2. @Bean 注解在方法上,声明当前方法的返回值为bean,
      1. Singleton 单例。一个spring容器之中只有一个bean实例。默认
      2. Protetype 每次调用新建一个bean
      3. Request web项目中,给每个http request新建一个bean
      4. Session web项目中,给每个http session新建一个bean
      5. GlobalSession 给每一个 global http session新建一个Bean实例
    3. @ComponentScan 用于对@Component的扫描
  5. 切面AOP的相关注解
    1. @Aspect 声明一个切面
    2. @PointCut 声明切点
    3. @After 在方法执行之后执行
    4. @Before 在方法执行之前执行(方法上)
    5. @Around 在方法执行之前与之后执行(方法上)
    6. 在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持
  6. @Value
    1. 注入普通字符 @Value("normal")
    2. 注入操作系统属性 @Value("#{systemProperties['os.name']}")
    3. 注入表达式结果 @Value("#{ T(java.lang.Math).random() * 100.0 }")
    4. 注入其它bean属性 @Value("#{beanInject.another}") // 注入其他Bean属性:注入beanInject对象的属性another,类具体定义见下面
    5. 注入文件资源 @Value("classpath:com/hry/spring/configinject/config.txt")
    6. 注入网站资源 @Value("http://www.baidu.com")
    7. 注入配置文件
  7. 环境切换
    1. @Profile 指定组件在哪个环境的情况下才能被注册到容器,不指定的话任何环境
    2. @Conditional 通过实现condition重写matches方法,从而决定该Bean是否被实例化
  8. 定时任务相关
    1. @EnableScheduling 在配置类上使用,开启计划任务的支持
    2. @Scheduled 来申明这是一个任务。包括cron、fixDelay,fixRate等类型(方法上,需先开启计划任务的支持)
  9. EnableXXX 主要是用来开启对xxx的支持
    1. @EnableAspectAutoProxy:开启对AspectJ自动代理的支持
    2. @EnableAsync:开启异步方法的支持;
    3. @EnableScheduling:开启计划任务的支持;
    4. @EnableWebMvc:开启web MVC的配置支持;
    5. @EnableConfigurationProperties:开启对@ConfigurationProperties注解配置Bean的支持;
    6. @EnableJpaRepositories:开启对SpringData JPA Repository的支持;
    7. @EnableTransactionManagement:开启注解式事务的支持;
    8. @EnableCaching:开启注解式的缓存支持;
  10. 测试相关注解
    1. @RunWith 运行器,spring对Junit的支持
    2. @ContextConfiguration 用来加载配置文件其中classes用来加载配置类
      1. @ContextConfiguration这个注解通常与@RunWith(SpringJUnit4ClassRunner.class)联合使用用来测试
      2. @ContextConfiguration括号里的locations = {"classpath*:/*.xml"}就表示将classpath路径里所有的xml文件都包括进来,自动扫描的bean就可以拿到,此时就可以在测试类中使用@Autowired注解来获取之前自动扫描包下的所有bean


    SpringMVC常用注解

    1. @EnableWebMvc 在配置类中开启对webMvc的支持
    2. @RequestMapping 用于映射web请求,包括路径和参数
      1. params 指定request中包含某些参数值,才让方法进行处理
      2. headers 指定request中必须包含某些指定的header值,才能让该方法处理请求
      3. value 指定请求的实际地址
      4. method GET、POST、PUT、DELETE
      5. consumers 指定处理请求的提交内容类型(Content-Type),如application/json,text/html;
      6. produces 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回
    3. @ResponseBody 支持将返回值放到response中,通常返回json数据
    4. @RequestBody 支持request的参数在request体内,而不是直接连接在地址后面
    5. @PathVariable 用于接收路径参数,@RequestMapping(“/hello/{name}”)声明的路径,将注解放在参数前,即可获取该值,通常作为Restful的接口实现方法。
    6. @RestController @Controller和@ResponseBody的组合
    7. @InitBinder 用来设置webDataBinder,自动绑定前台参数到model中
    8. ModelAttribute 绑定键值对到model中。在@controllerAdvice中让全局的requestMapping都能获取到此处设置的键值对

    Springboot常用注解

    1. @SpringBootApplication 包含了@ComponentScan、@Configuration、@EnableAutoConfiguration
      1. @ComponentScan 组件扫描,可自动发现和装配一些Bean
      2. @Configuration 等同于bean的XML配置文件
      3. @EnableAutoConfiguration 自动配置。
    2. @import 用来导入其他配置类
    3. @ImportResource 用来加载xml的配置文件

    全局异常 处理

    1. @ControllerAdvice 包含@Component,可以被扫描到。统一处理异常。常用场景
      1. 全局异常处理
      2. 全局数据绑定
      3. 全局数据预处理
    2. @ExceptionHandler(Exception.class) 用于全局处理控制器里的异常,用在方法上面表示遇到这个异常就执行以下方法