java - 运行我的 Spring Boot 应用程序时 Feign UnsatisfiedDependecyException
问题描述
我有一些为我的 Spring Boot 应用程序编写的假装客户端
这是我的代码
首先是一个控制器,我在其中使用我的 feign 客户端
package demo.notification;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import demo.shema.Feign.NotifFeignClient;
import demo.shema.dto.NotificationDTO;
@RestController
@RequestMapping(NotificationRestMediator.API)
public class NotificationRestMediator {
public static final String API ="notif";
@Autowired
private NotifFeignClient notifFeignClient;
@GetMapping
List<NotificationDTO> getAllNotifications(){
return notifFeignClient.getAll();
}
}
那么我的假客户如下
package demo.shema.Feign;
import java.util.List;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import demo.shema.dto.NotificationDTO;
@FeignClient("Notification")
public interface NotifFeignClient {
public static final String NOTIF = "notif";
@GetMapping(NOTIF)
List<NotificationDTO> getAll();
@PutMapping(NOTIF)
Boolean setNotif(@RequestBody NotificationDTO notif,@RequestParam String principal);
@PostMapping(NOTIF)
NotificationDTO createNotif(@RequestBody NotificationDTO notif,@RequestParam String principal);
@DeleteMapping(NOTIF)
Boolean deleteNotif(@RequestParam Long notifID,@RequestParam String principal);
}
我的伪装配置在使用注释的主类和另一个配置类上,如下所示
@SpringBootApplication
@EnableOAuth2Sso
@EnableEurekaClient
@EnableDiscoveryClient
@EnableFeignClients(basePackageClasses = { AppClientFeign.class })
@RibbonClients({ @RibbonClient(name = "COMPONENTS"), @RibbonClient(name = "USERS-MANAGER") })
@ComponentScan(basePackageClasses = { ClientApplication.class , AppClientFeign.class })
那么类配置是
@Configuration
@EnableFeignClients
@ImportAutoConfiguration({RibbonAutoConfiguration.class, FeignRibbonClientAutoConfiguration.class, FeignAutoConfiguration.class})
public class FeignConfig {
}
那么异常错误详细信息如下
创建名称为“notificationRestMediator”的 bean 时出错:通过字段“notifFeignClient”表示的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“demo.shema.Feign.NotifFeignClient”的 bean 时出错:FactoryBean 在创建对象时抛出异常;嵌套异常是 java.lang.IllegalStateException: RequestParam.value() 在参数 1 上为空
该怎么办 ?
解决方案
这是这里的一个错误,正如您所说的最新版本不需要指定值,但对于旧版本需要指定值
@PutMapping(NOTIF)
Boolean setNotif(@RequestBody NotificationDTO notif,@RequestParam("principal") String principal);
推荐阅读
- postgresql - 如何在 Postgres Docker-Compose 启动时运行 *.sh 文件
- solr - Solr 7.5限制具有某些术语的方面不能按计数排序?
- xamarin.forms - Firebase 身份验证令牌无效
- java - RDF4J:从端点解析查询结果并将其存储为 ntriples 文件(格式错误的查询)
- c - X86汇编中数组访问的解释
- r - 将条形图放置在条形图中的特定 x 轴值处
- sonos - Sonos 客户如何查看与其帐户关联的家庭?
- c - How do I determine if a value is within a range?
- batch-file - Batch Programming = How do i make characters appear slow when i echo then, like if you were typing them
- javascript - Function testing if array is Geometric not working