使用Java EE BeanManager,是否可以获取实例的引用<;AnyClass>;?
我正在尝试使用javax.enterprise.inject.spi.BeanManager以编程方式查找CDI代理 我能够解析除实例之外的所有bean 这是密码使用Java EE BeanManager,是否可以获取实例的引用<;AnyClass>;?,java,java-ee-6,Java,Java Ee 6,我正在尝试使用javax.enterprise.inject.spi.BeanManager以编程方式查找CDI代理 我能够解析除实例之外的所有bean 这是密码 public interface Service { public void doSomething(); } public class Serviceimpl implements Service{ public void doSomething(){ system
public interface Service {
public void doSomething();
}
public class Serviceimpl implements Service{
public void doSomething(){
system.out.println("Impl clazz");
}
}
public class LoginAction{
@Inject Service svc;
public void logintest(){
svc.doSomething();
}
}
当我这样做时,同样的功能也可以正常工作
public class LoginAction{
public void logintest(){
Service svc = BeanManager.getReference(Service.class);
svc.doSomething();
}
}
虽然当有多个实现时,我会这样做
public class LoginAction{
@Inject Instance<Service> services;
public void logintest(){
for(Service s : services){
s.doSomething();
}
}
}
公共类登录{
@注入实例服务;
公共无效登录测试(){
服务(s:服务){
s、 doSomething();
}
}
}
而且这个效果非常好。但我正试图通过BeanManager做同样的事情,但它不起作用
public void logintest(){
Instance<Service> svc = BeanManager.getReference(Instance<Service>..); // not sure how to program here. This is where help is needed
for(Service s : services){
s.doSomething();
}
}
public void logintest(){
实例svc=BeanManager.getReference(实例..);//不确定如何在此处编程。这是需要帮助的地方
服务(s:服务){
s、 doSomething();
}
}
尝试以编程/规范方式查找的主要原因是这种逻辑可能位于静态块中