Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自动连接既没有@Component,也没有@Service,也没有@Repository实现的接口?_Java_Spring_Spring Boot - Fatal编程技术网

Java 自动连接既没有@Component,也没有@Service,也没有@Repository实现的接口?

Java 自动连接既没有@Component,也没有@Service,也没有@Repository实现的接口?,java,spring,spring-boot,Java,Spring,Spring Boot,我遇到了这种情况,没有抛出错误,在运行时工作正常,但总是调用类A实现: public interface IA { void foo(); } public class A implements IA { void foo() {...} } public class B implements IA { void foo() {...} } @Service public class FooService { @Autowired private IA ia;

我遇到了这种情况,没有抛出错误,在运行时工作正常,但总是调用类A实现:

public interface IA {
    void foo();
}

public class A implements IA 
{
   void foo() {...}
}

public class B implements IA
{
   void foo() {...}
}

@Service
public class FooService
{
   @Autowired private IA ia;

   public void foo() {
      ia.foo();
   }
}
有人能解释一下为什么会这样吗

编辑:

配置:

@Configuration
@ComponentScan(basePackages = {...})
public class ApplicationConfig
{
...
}

为什么它不应该起作用。您有SpringXML配置吗?能否显示所使用的配置XML/注释?是否启用了任何组件扫描?您是否可以显示web.xml和相关的SpringXML文件或等效文件中的配置[对于servlet 3.0应用程序]在ApplicationConfig的注释中启用了组件扫描。但我认为只有用@Component/@Service/@Repository注释的类才能自动连接?上面的IA没有任何注释以及A和B实现。但它是有效的,我想知道为什么?考虑到您提供的代码,这是不可能的。再次检查你的配置,有些东西使Spring为
a
创建了一个bean,Spring不会在你不告诉它的情况下就做任何事情。@Tobb,这就是我的想法。结果表明,从未使用过
FooService
。类
A
“foo()”被直接调用。但这只是一个奇怪的代码,为什么
FooService
甚至是以这种方式实现的。我会通知实施这个的人。谢谢你的帮助。