Spring 弹簧第一层和第二层自动布线

Spring 弹簧第一层和第二层自动布线,spring,Spring,我有一个场景,其中我的ServiceImpl和Business类实现了相同的接口。但是我无法自动连接它们 @RestController @RequestMapping("/myservice") public interface myInterface{ @RequestMapping(value="/getSomething/{input}", method=RequestMethod.GET) doSomething(String input);

我有一个场景,其中我的ServiceImpl和Business类实现了相同的接口。但是我无法自动连接它们

   @RestController
   @RequestMapping("/myservice")
   public interface myInterface{

     @RequestMapping(value="/getSomething/{input}", method=RequestMethod.GET)
       doSomething(String input);

   }
现在我有两个实现相同接口的类

@Component
@Qualifier("doSomethingImpl")
public class DoSomethingImpl implements myInterface{

    @Autowired
    @Qualifier("businessLayer")
    myInterface businessLayer;

   doSomething(@PathVariable String input){
   //my logic here
   }

}

@Component
@Qualifier("businessLayer")
public class BusinessLayer implements myInterface{


   doSomething(@PathVariable String input){
   //my logic here
   }

}
现在,当我在服务器上运行它时,我得到以下错误

无法将处理程序“DoSomethingImpl”映射到URL路径 [/myservice/getSomething/{input}]:已存在类型为的处理程序 [class com.mypackage.business.BusinessLayer]已映射


有人能帮我解决这个错误吗?问题是两个控制器都映射到同一路径。我建议您将代码更改为:

   public interface myInterface{

       @RequestMapping(value="/getSomething/{input}", method=RequestMethod.GET)
       public Whatever doSomething(String input) {
          //whatever
       }

   }

@RequestMapping("something")
@RestController
public class DoSomethingImpl implements myInterface{

}

@RequestMapping("somethingElse")
@RestController
public class BusinessLayer implements myInterface{

}

DoSomethingImpl是服务层,所有我的请求映射都将在其中实现。业务层用于具有相同方法集的业务逻辑。在这种情况下,我如何自动连接我的业务层以从DoSomethingImpl调用。如果
DoSomethingImpl
是一个服务,它不应该是一个
RestController
,也不应该实现接口。是的,在Impl类上有请求映射是有意义的。这是我的错。。。无论如何,感谢它现在可以工作了。如前所述,这不是布线问题,但您几乎不应该在多个级别实现同一接口,因为方法调用的含义通常是不同的。