Java 自动连接既没有@Component,也没有@Service,也没有@Repository实现的接口?
我遇到了这种情况,没有抛出错误,在运行时工作正常,但总是调用类A实现: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;
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
甚至是以这种方式实现的。我会通知实施这个的人。谢谢你的帮助。