当前位置: 首页 > 知识库问答 >
问题:

位于JAR中的Autowiring Feign接口

归翔
2023-03-14

我有一个AttachmentApi服务类,它使用一个feign接口,这两个接口都位于JAR文件中,我在客户端微服务中使用该文件作为依赖项。
客户端微服务的控制器使用AttachmentApi服务从数据库获取数据。
当我访问该控制器的某个endpoint时,AttachmentApi服务成功地被AttachmentApi成功地被AttachmentApi成功地被AttachmentApi成功地被

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]

空值是由于没有得到autowired的假界面!

知道我在springboot类中使用了以下注释

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages= {"my.packages.including.the.feign.interface.package"})
@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();
@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();
}

共有1个答案

吴和硕
2023-03-14

试试这个

@EnableFeignClients(clients = {AttachmentFeignClient.class})
 类似资料:
  • 我有一个Apache Maven Java项目,它导入类: com.sforce.soap.enterprise.EnterpriseConnection 当从IntelliJ运行项目时,我在执行代码时没有任何问题。但是,我希望能够从命令行作为阴影JAR运行项目。我一直在用“MVN包”对罐子进行着色。当我从命令行运行jar时,我会得到错误:

  • 我正在尝试获取运行Runnable JAR文件的位置 但结果是: 而JAR文件位于 我也试过 但结果是: 所以基本上我想要的是JAR文件的路径,而不是类路径,而不是文件名。 有办法吗?

  • 我正在使用maven插件创建一个JAR。但是文件夹中的所有文件都直接放在JAR中,而不是resources文件夹中。(根本没有在JAR中创建resources文件夹) 因此,使用JAR的应用程序无法找到log4j2。xml文件。早期的resources文件夹正在创建中,但现在不知何故它没有被创建。 波姆。xml: 项目结构: 罐子结构: 在应用控制台我得到消息: 错误状态记录器Log4j2找不到日

  • 关于中位数的算法,有一点我不明白。这个算法的一个关键步骤是找到一个近似的中位数,根据维基百科,我们保证这个近似的中位数大于初始集元素的30%。 为了找到这个近似中位数,我们计算每组5个元素的中位数,将这些中位数聚集在一个新的集合中,然后重新计算中位数,直到获得的集合至少包含5个元素。在这种情况下,我们得到集合的中值。(如果我的解释不清楚,请参阅维基百科页面。) 但是,请考虑以下125个元素: 因此

  • 问题内容: 我有一个使用外部jar的应用程序。我使用了eclipse,效果很好。我从eclipse导出为jar,创建了一个清单文件,该文件具有Class- Path:./cab.v1.jar,我将两个jar都放在了同一目录中。我在命令行中运行:java -jar myApp.jar 并为cab.v1.jar(另一个jar)中的类获取 java.lang.NoClassDefFoundError 也

  • 我正在写一个go应用程序,它被dockerized在两个容器:db和app。 当启动容器'docker-compose up‘时,我看到消息:dial tcp:lookup dbpgsql on 127.0.0.11:53:没有这样的主机