CDI无法注入pojo java类。 (类型Pojo与限定符@Default的不满意的依赖关系)

时间:2015-11-13 16:50:22

标签: java java-ee gradle cdi

我有一个问题,就是将一个普通的java类(Pojo类)注入EJB bean。

@ApplicationScoped
public class DomainRouteFinderService {

    @Inject
    private Pojo pojo;

    private AtomicInteger sequencer;

    @PostConstruct
    private void init(){
        sequencer = new AtomicInteger();
        sequencer.lazySet(0);
    }

    @Produces
    @Named("sequencer")
    public String getText(){
        return "Number: "+ sequencer.getAndIncrement();
    }
}

Pojo课程:

public class Pojo {
}

在我的多项目中,结构如下:

ROOT - 耳朵

  1. ejb
  2. 网络
  3. Web模块依赖于ejb。

    在web模块中是beans.xml,其中bean-discovery-mode =“all”

1 个答案:

答案 0 :(得分:-1)

我通过向ejb添加另一个beans.xml来解决我的问题。 我把这个文件 main / java / resources / META-INF本地化。

为什么?

  

CD 1.1 / Java EE 7中最重要的变化之一就是   流行的请求,CDI现在默认启用。这意味着   没有必要显式添加beans.xml来启用DI。   但是,现在理解CDI也非常重要   通过提供更精细的组件扫描控制   '豆发现模式'属性。该属性有三种可能   值:

'annotated' - loosely translated, means that only components with a class-level annotation are processed.
'all' - all components are processed, just like they were in Java EE 6 with the explicit beans.xml.
'none' - CDI is effectively disabled.
     

默认情况下,如果您没有指定任何内容,并且没有beans.xml,则为bean   发现模式的注释'而不是所有的'假定。

但我想为ejb模块和war模块提供一个beans.xml。