注解总结

1.swagger注解和功能介绍(API接口)

@Api:
类,标识这个类是swagger的资源 @ApiModel:
类,描述一个Model的信息 (一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiOperation:
方法,一个http请求的操作  @ApiImplicitParams :
方法,一组参数说明 @ApiImplicitParam :
方法,单独的请求参数  @ApiResponse :
错误的响应 @ApiModelProperty:
方法,对model属性的说明或者数据操作更改 @ApiParam:
方法,用于方法,参数,字段说明;  表示对参数的添加元数据(说明或是否必填等) @ApiIgnore:
用于类,方法,方法参数,表示这个方法或者类被忽略

 

2.lombok 注解和功能介绍

@Data:
  注解在类上;提供类所有属性的getting和setting方法,
  此外还提供了equals、canEqual、hashCode、toString 方法
  
@Setter: 注解在属性上;为属性提供setting 方法
@Getter: 注解在属性上;为属性提供getting 方法
@Log4j : 注解在类上;为类提供一个属性名为log 的 log4j 日志对象
@NoArgsConstructor: 注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor: 注解在类上;为类提供一个全参的构造方法

 

3.springboot注解介绍和说明

1.启动配置加载初始化对象
   @SpringBootApplication:默认在主类加上
   @Configuration、@EnableAutoConfiguration、@ComponentScan
   例子:
   @SpringBootApplication
   public class SpringSecurityJwtGuideApplication {
       public static void main(java.lang.String[] args) {
        SpringApplication.run(SpringSecurityJwtGuideApplication.class, args);
    }
  }

   @EnableAutoConfiguration:
        启用 SpringBoot 的自动配置机制
   @ComponentScan: 
        扫描被@Component (@Service,@Controller)注解的 bean,
        注解默认会扫描该类所在的包下所有的类

    @Configuration:
       允许在 Spring 上下文中注册额外的 bean 或导入其他配置类


2.Spring Bean 相关
@Autowired
自动导入对象到类中,被注入进的类同样要被Spring容器管理
比如:Service 类注入到 Controller 类中

 


      我们一般使用 @Autowired 注解让 Spring 容器

      帮我们自动装配 bean。要想把类标识成可用于

      @Autowired 注解自动装配的 bean 的类,可以采用以下注解实现

 

     @Component

      通用的注解,可标注任意类为Spring组件。

    如果一个Bean不知道属于哪个层,可以使用@Component注解标注 

   @Repository

      对应持久层即 Dao 层,主要用于数据库相关操作

 

   @Service

    对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层

 

   @Controller

     对应Spring MVC控制层,主要用户接受用户

     请求并调用 Service 层返回数据给前端页面。

 

   @RestController

     @RestController注解是@Controller和@ResponseBody的合集,

     表示这是个控制器 bean,并且是将函数的返回值直接填入HTTP响应体中,

     是REST风格的控制器

 

      单独使用 @Controller 不加 @ResponseBody的话一般使用

    在要返回一个视图的情况,这种情况属于比较传统的Spring MVC的应用,

      对应于前后端不分离的情况。@Controller +@ResponseBody返回JSON

      或XML形式数据

 

    @Scope

     

 

     四种常见的 Spring Bean 的作用域

        singleton :

           唯一bean实例,Spring中的bean默认都是单例的

        prototype :

           每次请求都会创建一个新的 bean 实例

        request :

           每一次HTTP请求都会产生一个新的bean,

           该bean仅在当前HTTP request内有效

        session:

          每一次HTTP请求都会产生一个新的bean,

          该bean仅在当前HTTP session内有效

       

      @Configuration

     一般用来声明配置类,可以使用@Component注解替代,

     不过使用Configuration注解声明配置类更加语义化

    

 

 

      HTTP 请求类型

       

 

       

 

        

 

        

 

         

 

         

      @PathVariable  @RequestParam

        

 

         

 

        

       @RequestBody

      用于读取 Request 请求(可能是 POST,PUT,DELETE,GET 请求)的body部分并且Content-Type

      为application/json 格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。

      系统会使用HttpMessageConverter或者自定义的HttpMessageConverter

      将请求的body中的json字符串转换为java对象

 

     

 

4.springboot注解属性文件读取

 

1.@value(常用)
  

 


  2.@ConfigurationProperties(常用)

   

 

 3.PropertySource(不常用)

  

 

 

 

  字段校对:

  

 

 

 

 

5.全局处理 Controller 层异常

 

@ControllerAdvice :注解定义全局异常处理类
@ExceptionHandler :注解声明异常处理方法

 

 

 

 

6.JPA相关的注解

@Entity
  声明一个类对应一个数据库实体
@Table 
  设置表明

 


  创建主键

   

 

    

   主要策略:

    public enum GenerationType {

 

      /**

       * 使用一个特定的数据库表格来保存主键

       * 持久化引擎通过关系数据库的一张特定的表格来生成主键,

     TABLE,

 

    /**

     *在某些数据库中,不支持主键自增长,比如OraclePostgreSQL其提供了一种叫做"序列(sequence)"的机制生成主键

     */

    SEQUENCE,

 

    /**

     * 主键自增长

     */

    IDENTITY,

 

    /**

     *把主键生成策略交给持久化引擎(persistence engine),

     *持久化引擎会根据数据库在以上三种主键生成 策略中选择其中一种

     */

    AUTO

}

 

@GenericGenerator声明一个主键策略,

然后 @GeneratedValue使用这个策略

 

 

 

 

 

字段设置:

  @Column 声明字段

  @Transient :声明不需要与数据库映射的字段,在保存的时候不需要保存进数据库

  @Lob:声明某个字段为大字段。

 可以使用枚举类型的字段,不过枚举字段要用@Enumerated注解修饰

 

 

 

    @Modifying 注解提示 JPA 该操作是修改操作,

    注意还要配合@Transactional注解使用

  

 

 

 

 

    关联关系

      @OneToOne 声明一对一关系

      @OneToMany 声明一对多关系

      @ManyToOne声明多对一关系

      @MangToMang声明多对多关系

 

   事务 @Transactional

    我们知道 Exception 分为运行时异常 RuntimeException

      和非运行时异常。在@Transactional注解中如果不配置rollbackFor属性,

       那么事物只会在遇到RuntimeException的时候才会回滚,

       加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也回滚

 

      @Transactional 注解一般用在可以作用在或者方法

 

   作用于类

    当把@Transactional 注解放在类上时,

      表示所有该类的public 方法都配置相同的事务属性信息

 

   作用于方法

     当类配置了@Transactional,方法也配置了@Transactional

     方法的事务会覆盖类的事务配置信息

    @JsonIgnoreProperties 

       作用在类上用于过滤掉特定字段不返回或者不解析

   

 

 

     

     @JsonIgnore

      一般用于类的属性上,作用和上面的@JsonIgnoreProperties 一样

     @JsonFormat

         一般用来格式化 json 数据

     

 

 

 

7.测试类相关

 

@ActiveProfiles
   一般作用于测试类上, 用于声明生效的 Spring 配置文件
@Test 声明一个方法为测试方法
@Transactional 被声明的测试方法的数据会回滚,避免污染测试数据
@WithMockUser Spring Security 提供的,用来模拟一个真实用户,并且可以赋予权限

 

 

8.@bean

这个注解主要用在方法上,声明当前方法体中包含了最终产生bean实例的逻辑,
方法的返回值是一个Bean。这个bean会被Spring加入到容器中进行管理,
默认情况下bean的命名就是使用了bean注解的方法名。
@Bean 一般和@Component或者@Configuration一起使用

  @Bean 显式声明了类与 bean 之间的对应关系,

   并且允许用户按照实际需要创建和配置 bean 实例。

 

 

  

 

  

 

  

 

  

 

   

 

  

 

学习来源:

   https://zhuanlan.zhihu.com/p/135987318

   http://www.hellojava.com/a/88990.html

 

posted @ 2021-04-02 14:30  小窝蜗  阅读(72)  评论(0编辑  收藏  举报