java常用的注解(个人笔记)

java注解

提示:本文大部分翻译采用APP直接翻译

文章目录

  • java注解
    • 一、java的内置注解(java 7 后额外添加了后三个注解)
    • 二、[元注解](https://baike.baidu.com/item/%E6%B3%A8%E8%A7%A3/22344968)
    • 三、常用注解
      • @`Controller`
      • @`RequestMapping`
      • @`PatchMapping`
      • @`GetMapping`
      • @`PostMapping`
      • @`PutMapping`
      • @`DeleteMapping`
      • @`RestController`
      • @`ResponseBody`
      • @`RequestBody`
      • @`RequestParam`
      • @`PathVariable`(路径变量)
      • @`PathParam`()
      • @`QueryParam`
      • @`ExceptionHandler`
      • @`ControllerAdvice`
      • @`Data`
      • @`AllArgsConstructor`
      • @`NoArgsConstructor`
      • @`RequiredArgsConstructor`
      • @`Component`
      • @`Service`
      • @`Slf4j`
  • 四、spring的常用注释
      • @`SpringBootApplication` (Spring Boot 应用程序)
        • @`SpringBootConfiguration`(Spring Boot 配置)
        • @`EnableAutoConfiguration`(启用自动配置)
        • @`ComponentScan`(组件扫描)
      • @`Configuration`(配置)
      • @`Import`
      • @`Secured`和@`PreAuthorize`
      • @`Autowired`
      • @`Resource`
      • @RefreshScope
  • 五、小
      • @`FieldEncrypt`
      • @Trim
  • 六、其他包
      • JUnit5和Junit 4

一、java的内置注解(java 7 后额外添加了后三个注解)

  • @Override-重写方法

  • @Deprecatd 过时方法使用会编译警告https://baike.baidu.com/item/%E6%B3%A8%E8%A7%A3/22344968

  • @SuppessWarnings 忽略声明警告

  • @Target --标记注解为哪个java成员

  • @Inherited 标记注解继承哪个注解

  • @SafeVarargs 忽略任何参数关于 泛型变量的方法和构造函数产生的警告

  • @FunctionalInterface 标识一个匿名函数或函数式接口

  • @Repeatable 标识某注解可以在同一个声明上使用多次。

二、元注解

  • @Retention

描述注解保留的时间范围


package java.lang.annotation;

/**
 * Annotation retention policy.  The constants of this enumerated type
 * describe the various policies for retaining annotations.  They are used
 * in conjunction with the {@link Retention} meta-annotation type to specify
 * how long annotations are to be retained.
 *
 * @author  Joshua Bloch
 * @since 1.5
 */
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.
     *注释将被编译器记录在类文件中由VM在运行时保留,因此它们可能被反射地读取。
     运行期保留  可以通过反射获得注解信息
     * @see java.lang.reflect.AnnotatedElement
     */
    RUNTIME
}

  • @Target

描述注解的使用范围(即:被修饰的注解可以用在什么地方) 。

public enum ElementType {
    /** Class, interface (including annotation type), or enum declaration 类,接口,枚举类 */
    TYPE,

    /** Field declaration (includes enum constants) 成员变量 枚举常量*/
    FIELD,

    /** Method declaration  成员方法 */
    METHOD,

    /** Formal parameter declaration 方法参数*/
    PARAMETER,

    /** Constructor declaration  构造方法*/
    CONSTRUCTOR,

    /** Local variable declaration  局部变量*/
    LOCAL_VARIABLE,

    /** Annotation type declaration  注解类*/
    ANNOTATION_TYPE,

    /** Package declaration  修饰包*/
    PACKAGE,

    /**
     * Type parameter declaration
     *类型 参数  1,。8 新增
     * @since 1.8
     */
    TYPE_PARAMETER,

    /**
     * Use of a type
     *使用类型的任意地方
     * @since 1.8
     */
    TYPE_USE
}

  • @Documented 机反(记录注释)

是一个标记注解 功能生成帮助文档时保留其注解信息
默认情况下,JavaDoc 是不包括注解的,但如果声明注解时指定了 @Documented,就会被 JavaDoc 之类的工具处理,所以注解类型信息就会被包括在生成的帮助文档中。

  • @Inherited 机反(遗传)

标记注解 用来指定该注解可以被继承

  • @Result

三、常用注解

@Controller

//控制器 @component扩展 用于指示Spring类的实例是一个控制器,该注解不需要在实现COntroller接口
//只需要加入控制器类上 ,spring扫描机制加会找到这个类
//需要在xml中 添加 包扫描配置信息
java常用的注解(个人笔记)_第1张图片

@RequestMapping

//用于映射一个请求或者一个方法,可以放在方法或者类上面
//在类上 : 该类中的所有方法到将映射为相对于类级别的请求,表示该控制器所有请求映射到value属性值所指定的路劲下 /user/selectUser
//在方法上 : 作为请求处理方法在程序接受到对应的url请求时调用

一些组合注解
java常用的注解(个人笔记)_第2张图片

@PatchMapping

@GetMapping

@PostMapping

@PutMapping

等于= @RequestMapping(value = “/updatePerson”,method =
RequestMethod.PUT) 就相对于这个了 这几个 都是相同类似的 注解

@DeleteMapping

@RestController

相当于@ResponseBody和@Controller的组合注解
java常用的注解(个人笔记)_第3张图片

原来返回json需要@ResponseBody和@Controller配合。

@ResponseBody

将java对象转为json格式的数据,使用此注解之后不会再走视图处理器 , 可以把后台传到前端的数据自动转换为json

@RequestBody

用来接收前端传递给后台的json字符串 一般是post请求
一个请求,只有一个RequestBody
看大佬的去
注意
使用requestBody时不能使用getMapping请求 因为 不支持request body 中放值
推荐文章

@RequestParam

作用 :传递参数
在接收前端传递的参数时,参数的名字必须有对应的名字 如果没有对应的名字会报400
一个请求,可以有多个RequestParam。
方法中的参数
value:参数名字,即入参的请求参数名字,如username表示请求的参数区中的名字为username的参数的值将传入;
required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报404错误码;
也可以直接接MAP

@PathVariable(路径变量)

以将 URL 中占位符参数绑定到控制器处理方法的入参中
java常用的注解(个人笔记)_第4张图片

@PathParam()

这个注解是和spring的pathVariable是一样的,也是基于模板的,但是这个是jboss包下面的一个实现,上面的是spring的一个实现,都要导包

@QueryParam

是jax-rs提供的 和 spring RequestParam的功能是一样的

@ExceptionHandler

java常用的注解(个人笔记)_第5张图片

作用 : 自定义注解
有什么用 :可以当成异常拦截器
用在方法上 结合ControllerAdvice注解 可以进行全局异常拦截处理

@ControllerAdvice

这是一个增强的 Controller
用来
全局异常处理
全局数据绑定
全局数据预处理

@Data

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
 </dependency>

注解在类上, 为类提供get,set读写属性, 此外还提供了 equals()、hashCode()、toString() 方法

@AllArgsConstructor

翻译:所有构造函数

会生成一个包含所有变量,同时如果变量使用了NotNull annotation , 会进行是否为空的校验,

使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数就是全部参数的构造函数的自动生成,该注解的作用域也是只有在实体类上,参数的顺序与属性定义的顺序一致。

@NoArgsConstructor

翻译: 无参数构造函数

无参构造函数

@RequiredArgsConstructor

Spring 从 4.0 开始, 就不在 推 荐 使 用 属 性 注 入 ,原因是它会让我们忽略掉一些代码的隐患。

所以,构造器的方法就成了首选。
可以生成带有必需参数的构造函数

把需要注入的属性,修改成 final 类型的(或者使用 @NotNull 注解,不推荐),这些属性将构成默认的构造器。

基于lombok包,必须引用lombok

@Component

最普通的组件,可以被注入到spring容器进行管理
把普通pojo实例化到spring容器中,相当于配置文件中的

@Service

作用于业务逻辑层
把服务层的类交给springioc容器管理

@Slf4j

pom文件加入lombok的依赖

作日志输出的,

四、spring的常用注释

@SpringBootApplication (Spring Boot 应用程序)

有了它项目就可以运行起来,因为他相当于3个注解的功能
@SpringBootConfiguration(Spring Boot 配置)
加载Spring的配置
@EnableAutoConfiguration(启用自动配置)
@ComponentScan(组件扫描)

@Configuration(配置)

等同于spring的XML配置文件(将类标记为应用程序上下文的Bean定义的源。)

@Import

  • List item

@Import引入普通的类可以帮助我们把普通的类定义为Bean。@Import可以添加在@SpringBootApplication(启动类)、@Configuration(配置类)、@Component(组件类)对应的类上。

@Secured和@PreAuthorize

连接

@Autowired

翻译 : 自动连线
如果容器中存在一个bean,这个bean的类型和id与被标注@Autowired的属性或者方法参数的类型和名称相同, 就可以完成依赖注入 主要用到的功能就是依赖注入了
推荐文章

@Resource

翻译:资源

spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。
类似Autowired Autowired默认按种类自动找 resource 默认按面字

1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
  2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
  3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
  4. 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;
看的这个兄弟的

@RefreshScope

五、小

@FieldEncrypt

mybatis- plus-mate
付费使用面向企业的版本,里面提供了企业常规需要的一些东西,这个注解就是里面提供的加密功能的注解,可以写在字段上,也有脱敏相关的内容

@Trim

@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Trim {
}

和trim方法差不多

六、其他包

JUnit5和Junit 4

JUnit5 @BeforeAll 注解替换了 JUnit4 中的@BeforeClass注解。 它用于表示应在当前测试类中的所有测试之前执行注解方法。

java常用的注解(个人笔记)_第6张图片

你可能感兴趣的:(java-笔记,#javaweb笔记,mvc,java,struts,spring)