我的应用程序当前使用一个类,其中两个服务通过@Inject
注释注入其中。
@Stateless
public class MyClass {
@Inject
private SomeService someService;
@Inject
private OtherService otherService;
}
这两个服务都非常相似,并且都扩展了抽象的Service
类。
这是我想做的...
我的基本想法是MyClass
类看起来像这样:
@Stateless
public class MyClass {
@Inject
private Service service;
}
取决于配置,应用程序决定注入SomeService
或OtherService
示例:
if (config.getValue().equals("some_service")) {
return new SomeService();
} else if (config.getValue().equals("other_service")) {
return new OtherService();
}
Jave EE是否为此提供解决方案?
您需要创建一个自定义注释。
您将如何做。
->为SomeService
和OtherService
创建自定义注释。
@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;
}