の依存関係として使用しているファイル内にある両方を使用するAttachmentApiサービス クラスがあります。
そのクライアント マイクロサービスの は、サービスを使用して db からデータを取得します。
そのコントローラーのエンドポイントにアクセスすると、AttachmentApi サービスは正常に自動配線されますが、偽のインターフェイスはそうではなく、次の例外が発生します。feign interfaceJARclient microservicecontrollerAttachmentApi
java.lang.NullPointerException: null
at ma.co.omnidata.framework.services.attachment.api.AttachmentApi.upload(AttachmentApi.java:26) ~[classes/:na]
at ma.co.omnidata.attachment.user.service.impl.AttachmentsUserService.uploadFile(AttachmentsUserService.java:21) ~[classes/:na]
at ma.co.omnidata.attachment.user.controllers.AttachmentUserController.uploadFile(AttachmentUserController.java:31) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_144]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_144]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_144]
at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_144]
null は、autowired を取得しない偽のインターフェイスによるものです。
springboot クラスで次の注釈を使用していることを知っている
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages= {"my.packages.including.the.feign.interface.package"})
アドバイスをいただければ幸いです。
更新 1
Feign インターフェイス (JAR 依存関係にあります)
@FeignClient(name="attachment-service", fallback=AttachmentHystrixFallback.class)
public interface AttachmentFeignClient {
@RequestMapping("attachment/{id}")
byte[] getAttachment(@PathVariable(name="id") String id);
@RequestMapping("attachments")
List<AttachmentDto> getAttachments(@RequestParam(name="attachableId") Long attachableId,
@RequestParam(name="className") String className, @RequestParam(name="appName") String appName);
@RequestMapping("upload")
void upload(MultipartFile file, @RequestParam(name="attachableId") Long attachableId,
@RequestParam(name="className") String className, @RequestParam(name="appName") String appName);
@RequestMapping("test")
String test();
}
AttachmentApi (JAR 依存関係にもあります)
@Service
public class AttachmentApi implements IAttachmentApi {
@Autowired
AttachmentFeignClient client;
@Override
public byte[] getAttachment(String id) {
return client.getAttachment(id);
}
@Override
public void upload(IAttachable entity, MultipartFile file) {
client.upload(file, entity.getAttachableId(), entity.getClassName(), entity.getAppName());
}
@Override
public List<AttachmentDto> getAttachments(IAttachable entity) {
return client.getAttachments(entity.getAttachableId(), entity.getClassName(), entity.getAppName());
}
public String test() {
return client.test();
}
}
NB : 私のクライアント マイクロサービスは、JAR 依存関係にある Bean (Feign インターフェースでも AttachmentApi クラスでもない) を自動配線できません!