仅将接口的实现注册到 Spring 应用程序上下文?

Pri*_*til 1 spring

我有一组课程如下。

public class ServiceA implements CommonInterface
{
   public void startA()
   {
       ....
   }
}

public class ServiceB implements CommonInterface
{
   public void startB()
   {
       ....
   }
}
Run Code Online (Sandbox Code Playgroud)

Spring框架中是否有任何方法可以仅自动注册实现 CommonInterface 到应用程序上下文的类并访问它们?

eke*_*iga 5

是的,这是可能的。如果您使用 Java 配置,则可以使用 @ComponetScan 将组件过滤为实现特定接口的组件。您需要禁用 Spring 使用的默认过滤器(基于检测构造型注释类,即 @Component 、 @Service 等)。

@Configuration
@ComponentScan(basePackages = {"com.mydomain.myapp.service"} , useDefaultFilters = false , includeFilters = {@Filter(type = FilterType.ASSIGNABLE_TYPE , value = CommonInterface.class)})
public class AppConfig{
   //@Bean methods
}
Run Code Online (Sandbox Code Playgroud)

使用 context:component-scan 在 xml 中也可以实现相同的效果