常见的注解

1、@FeignClient

主要用于客户端服务发现,实际就是调用其他的服务。

参数有如下:

value, name:作用一样,如果没有配置url那么配置的值将作为服务名称,用于服务发现。反之只是一个名称。

url:用于配置指定服务的地址,相当于直接请求这个服务,不经过Ribbon的服务选择。像调试等场景可以使用。

备注:只加了该注解,bean不会自动创建,不会纳入springioc容器的,还需要在启动类上加注解@EnableFeignClients,该注解负责注册用feignclient标记的客户端

2、@EnableFeignClients

参数有如下:

basePackages:指定需要扫描的包路径

一般情况下,我们在启动类上面添加了@EnableFeignClients注解就是表明当前应用服务(我们称之为服务A)中有的地方想要引用其它应用服务(我们称之为服务B)中的接口。

如果服务B可以单独启动起来并且注册到注册中心,则我们仅仅在服务A的启动类中添加@EnableFeignClients注解即可;  如果服务B没有单独启动起来,而是以Jar包的形式被引入到服务A中,则服务A在启动的时候是不会主动去加载服务B中标注了@FeignClient注解的interface而去自动生成bean对象,这样我们在服务A中的Controller类中以如下这种方式去引入使用服务B中的标注了@FeignClient注解的接口 是会报错的,这个时候就需要使用basePackages属性字段去指明应用程序A在启动的时候需要扫描服务B中的标注了@FeignClient注解的接口的包路径

package com.haha.dde.salc.pub.seq;

@Configuration
@EnableFeignClients(basePackages = "com.haha.bits.idservice.api.dependency")
public class SequenceConfig {

}

----------------------------------------------------------------------------------

package com.haha.bits.idservice.api.dependency;

@ResponseBody
@FeignClient(name = "idservice-client",url = "${feign.client.config.idservice.url}")
public interface IIdServiceClient {
    @PostMapping({"/api/idservice/getsequence"})
    long getSequence(@RequestParam("key") String var1);
}

工作原理:https://www.csdn.net/tags/NtzacgxsMjc0ODctYmxvZwO0O0OO0O0O.html

3、@Autowired

依赖注入Bean

使用@Autowired注入和applicationContext.getBean获取对象的区别?

---单例模式下(默认情况下):
Autowired与getBean两种方式没有区别,获取的都是同一个对象。

---多例模式下:
Autowired是使用的同一个对象,而getBean就是创建的一个新对象。

参考:https://blog.csdn.net/baidu_36528788/article/details/81237922

解决@Scope(“prototype“)不生效_梦想blog的博客-CSDN博客_@scope prototype

4、@Date 

@Data:加在类上,相当于同时使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor这些注解;
 

(94条消息) Java中的@Data的使用_好多个码农的博客-CSDN博客_@data

5、@Builder:可以使用构造者模式来设置类属性

 主要是用来生成对象,并且可以为对象链式赋值。

Lombok中的@Builder注解的使用

Lombok的@Builder注解带来的两大坑

 6、@AllArgsConstructor:加在类上,可以生成含实体类全参数的构造方法;
      @NoArgsConstructor:加在类上,可以生成无参构造方法;

7、@EqualsAndHashCode  比较两个对象的属性

@EqualsAndHashCode(callSuper = false、true)作用

8、@JsonIgnoreProperties(ignoreUnknown = true)  忽略类中不存在的字段

@JsonIgnoreProperties 类注解

springboot中jackson扩展

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@JsonIgnoreProperties(ignoreUnknown = true)
@ApiModel(value = "合同模板新增请求DTO", description = "请求/响应参数")
public class CreateTemplateReqDTO extends AbstractDTO {

	@ApiModelProperty(value = "模板名称")
	private String templateName;

	@NotNull(message = "规格id不能为空")
	@ApiModelProperty(value = "规格id")
	private Long specId;

}

 9、@CrossOrigin

先说明@CrossOrigin是用来处理跨域请求的注解,在Controller中添加此注解
跨域是什么:
跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
所谓同源是指,域名,协议,端口均相同

如: http://www.index.com:8080
http是协议名
www.index.com是域名
8080是端口号

浏览器执行javascript脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。
当域名www.qwe.com下的js代码去访问www.123.com域名下的资源,就会受到限制。

**请注意:**localhost和127.0.0.1虽然都指向本机,但也属于跨域。

总结一句话就是:
马老板(a域名)的小弟(a域名下的js代码)想去勾引(访问)汪家(b域名)二嫂(b域名下的资源),因为不是一家人,肯定会受到法律的限制,但是加上@CrossOrigin 注解之后,就好说了(让你能访问不是一个域的文件)

10、 @Accessors(chain = true)  链式访问

lombok @Accessors用法详解

11、表实体类相关注解

@TableName:指定映射类的数据库表名
@TableId:表中的主键名
@TableField:非主键普通字段名 

项目中见到的@Tablename,@TableId,@TableField什么意思

@Data
@Builder
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
@TableName("CFG_TEMPLATE")
public class CfgTemplate extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /** 主键ID */
    @TableId(value = "PROTOCOL_TEMPLATE_ID", type = IdType.INPUT)
    private Long protocolTemplateId;

    /** 模板ID */
    @TableField(value = "TEMPLATE_ID")
    private Long templateId;

   /** 创建日期 --- 自动设置时间 */
    @TableField(value = "CREATE_DATE", fill = FieldFill.INSERT)
    private LocalDateTime createDate;

    /** 更新日期 --- 自动设置时间 */
    @TableField(value = "UPDATE_DATE", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateDate;

    /** 生效日期 */
    @TableField(value = "VALID_DATE")
    private LocalDateTime validDate;

}

 12、@AliasFor注解

@AliasFor注解_大局观的小老虎的博客-CSDN博客

13、@MapperScan

 @MapperScan注解的一些问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值