根据Java EE中的配置注入服务

问题描述 投票:1回答:1

我的应用程序当前使用一个类,其中两个服务通过@Inject注释注入其中。

@Stateless
public class MyClass {

  @Inject
  private SomeService someService;

  @Inject
  private OtherService otherService;
}

这两个服务都非常相似,并且都扩展了抽象的Service类。

这是我想做的...

我的基本想法是MyClass类看起来像这样:

@Stateless
public class MyClass {

  @Inject
  private Service service;
}

取决于配置,应用程序决定注入SomeServiceOtherService

示例:

if (config.getValue().equals("some_service")) {
  return new SomeService();
} else if (config.getValue().equals("other_service")) {
  return new OtherService();
}

Jave EE是否为此提供解决方案?

java jakarta-ee cdi java-ee-7
1个回答
0
投票

您需要创建一个自定义注释。

您将如何做。

->为SomeServiceOtherService创建自定义注释。

@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface SomeService {}


@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface OtherService {}

->然后,用所需的自定义注释对两个类进行注释。

@SomeService 
public class SomeService implements Service {}

@OtherService
public class OtherService implements Service {}

->现在,您可以根据您放置的注释注入任何bean。

@Stateless
public class MyClass {

  @Inject
  @SomeService // or @OtherService 
  private Service service;
}

参考JBoss.org - Dependency Injection Article

© www.soinside.com 2019 - 2024. All rights reserved.