基于SpringBoot实现的远程服务调用
写在前面的知识概要
SpringBoot 的 @Import 用于将指定的类实例注入到Spring IOC Container中。
SpringBoot 提供了 三种使用 @Import 将 类实例注入至 Spring IOC Container中方法。
- 直接注入
- 实现 ImportBeanDefinitionRegistrar 接口注入
- 实现 ImportSelector 注入
详见原文:SpringBoot构建微服务实战 之 @Import
我这里是通过实现 ImportBeanDefinitionRegistrar 接口注入的
要达到的效果
服务端:
@RemoteService(UserService.class)
public class UserServiceImpl implements UserService {
//实现UserService接口中的方法
}
客户端:
//在使用类中自动注入
@RemoteClient("${remote.url}")
private UserService userService;
2.实现过程
自定义扫描路径
ImportBeanDefinitionRegistrar接口方法:
void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
BeanDefinitionRegistry registry)
ResourceLoaderAware 接口方法:
void setResourceLoader(ResourceLoader resourceLoader)
话不多说,上代码
public