当前位置: 首页>后端>正文

java常用注解及spring常见注解

  • @PostMapping

对应接收参数的注解:@RequestBody
解释:一个类的时候,或者你不想你的参数直观的被用户看到,因为PostMapping,接收参数正常是放在Body里面的,而不是拼在请求地址后面的,所以相对来说要安全一点儿,所以涉及数据库的添加、修改信息等操作、适合用这个。
举例:手机号密码登录接口

@Data
@ApiModel("手机号密码认证参数")
public class LoginByPhonePassword {
    @ApiModelProperty(value = "手机号码", required = true)
    private String phone;

    @ApiModelProperty(value = "用户密码", required = true)
    private String password;
}
    @ApiOperation("手机号密码登录")
    @PostMapping("/loginByPhonePassword")
    public void loginByPhonePassword(@Valid @RequestBody LoginByPhonePassword loginByPhonePassword){
    //TO-DO U R thing
    }
  • @GetMapping

对应接收参数的注解:@RequestParam 、@PathVaiable
解释:参数是拼接在请求地址后面的,如果你觉得你要传输到后端接口的东西是无关紧要的而且数量很少,就一个两个,用GetMapping确实还是比较方便的。
举例:根据ID查询用户信息

    @ApiOperation("根据ID查询个人信息")
    @GetMapping("/getUserInfoById")
    public void loginByPhonePassword(@RequestParam("id") Integer id ){
    //TO-DO U R thing
    }
  • @ApiOperation swagger注解

1.@ApiOperation不是spring自带的注解是swagger里的
2.注解@ApiOperation 和@ApiParam是用来构建Api 文档的
3.@ApiOperation(value="接口说明",httpMethod="接口请求方式",response="接口返回参数类型",notes="接口发布说明");其他参数可参考源码
4.@ApiParam(required ="是否必须参数",name="参数名称",value="参数具体描述")

@ApiOperation(value = "分页获取 农村保洁-积分审核 列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "size", value = "页面大小,默认10", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "current", value = "当前页码,默认1", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "kw", value = "关键字", dataType = "String", paramType = "body"),
@ApiImplicitParam(name = "status", value = "审核状态 0-未审核 1-已审核 2-已驳回 4-审核中", dataType = "String", paramType = "body"),
@ApiImplicitParam(name = "type", value = "积分类型 当前卫生", dataType = "String", paramType = "body"),
@ApiImplicitParam(name = "zid", value = "镇id", dataType = "int", paramType = "query"),
@ApiImplicitParam(name = "cid", value = "村庄id", dataType = "int", paramType = "query"),
// @ApiImplicitParam(name = "audit_status", value = "审核状态 0-未审核 1-已审核 2-已驳回 4-审核中", dataType = "int", paramType = "query"),
})

 
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.2.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.2.2</version>
</dependency>
  • @Transactional spring中管理事务一般使用

  • @Resource和@Autowired 都是为了装配Bean,但是两者在使用上又有少许区别

1.@Autowired是默认按照类型装配Bean,当需要用名称装配时,可以在@Autowired后面使用@Qualifier注解指定name属性,来告知容器加载哪个bean
2.@Resource默认按照名字装配Bean,即会按照name属性的值来找到具有相同id的Bean Definition 并注入。如果@Resource没有指定name属性,则会根据这个将要被注入的属性的名字来进行Bean装配。这段话有点绕口,下面结合例子来展示。

@Autowired() @Qualifier("baseDao")     
private BaseDao baseDao; 
@Resource(name="baseDao")     
private BaseDao baseDao;   
  • @Data注解

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

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.4</version>
    <scope>provided</scope>
</dependency>

其他相关注解:

@Data : 注在类上,提供类的get、set、equals、hashCode、toString等方法
@AllArgsConstructor :注在类上,提供类的全参构造
@NoArgsConstructor :注在类上,提供类的无参构造
@Setter :注在属性上,提供 set 方法
@Getter :注在属性上,提供 get 方法
@EqualsAndHashCode :注在类上,提供对应的 equals 和 hashCode 方法
@Log4j/@Slf4j :注在类上,提供对应的 Logger 对象,变量名为 log

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("clean_integral_audio")
@ApiModel(value="CleanIntegralAudio对象", description="农村保洁-积分审核")
public class CleanIntegralAudio implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
  • @NoArgsConstructor和@AllArgsConstrutor注解

是lombok插件生成不同构造方法的注解,来完成项目中不同构造方法的需求。
@NoArgsConstructor : 生成一个无参数的构造方法

@AllArgsContructor: 生成一个包含所有参数的构造方法

  • @EqualsAndHashCode注解(待更新)

  • @Accessors 注解

他是lombok 插件包中的一个注解
(1)该注解主要作用是:当属性字段在生成 getter 和 setter 方法时,做一些相关的设置。

(2)当它可作用于类上时,修饰类中所有字段,当作用于具体字段时,只对该字段有效。


java常用注解及spring常见注解,第1张

该字段共有三个属性,分别是 fluent,chain,prefix,下面我们分别来说明下,他的意思分别是什么?
1、fluent 属性
不写默认为false,当该值为 true 时,对应字段的 getter 方法前面就没有 get,setter 方法就不会有 set。


java常用注解及spring常见注解,第2张

2、chain 属性
不写默认为false,当该值为 true 时,对应字段的 setter 方法调用后,会返回当前对象
java常用注解及spring常见注解,第3张

3、prefix 属性
该属性是一个字符串数组,当该数组有值时,表示忽略字段中对应的前缀,生成对应的 getter 和 setter 方法。比如现在有 xxName 字段和 yyAge 字段,xx 和 yy 分别是 name 字段和 age 字段的前缀。

那么,我们在生成的 getter 和 setter 方法如下,它也是带有 xx 和 yy 前缀的。


java常用注解及spring常见注解,第4张

如果,我们把它的前缀加到 @Accessors 的属性值中,则可以像没有前缀那样,去调用字段的 getter和 setter 方法。


java常用注解及spring常见注解,第5张
  • @TableName 是mybatis-plus中的注解,主要是实现实体类型和数据库中的表实现映射

当数据库名与实体类名不一致或不符合驼峰命名时,需要在此注解指定表名(不加这个注解默认将实体类的小写形式在db中寻找

  • @Service注解 在类上 使用该注解,表示其是一个Service


https://www.xamrdz.com/backend/3pd1936960.html

相关文章: