常见的注解

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

 

你可能感兴趣的:(java)