我尝试像这样@Inject一个字段(它是一个jar模块,在META-INF下存在空的beans.xml):
IDataProvider接口
public interface IDataProvider {
void test();
}
DataProvider实现 导入javax.enterprise.context.ApplicationScoped;
@ApplicationScoped
public class DataProvider implements IDataProvider {
private int i;
public DataProvider() {
i = 42;
}
@Override
public void test() {
}
}
我尝试注入 DataProvider 的类
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
@ApplicationScoped
public class DataController {
@Inject
private IDataProvider dataProvider;
private int k;
public DataController() {
k = 42;
}
}
如果我在Wildfly上运行此代码,注入的dataProvider始终为null(在DataController构造函数处断点)。
每个教程都是这样做的,所以我认为这应该可以工作。唯一的区别是两个类都应该是@ApplicationScoped。
我正在使用Wildfly 8.2Final、Gradle、IntelliJ。 我的gradle.build文件如下:
apply plugin: 'java'
repositories {
mavenCentral()
jcenter()
}
dependencies {
compile group:'javax', name:'javaee-web-api', version:'7.+'
compile group:'org.jboss.ejb3', name:'jboss-ejb3-ext-api', version:'2.+'
}
sourceSets {
main {
java {
srcDir 'src/api/java'
srcDir 'src/main/java'
}
}
test {
java {
srcDir 'src/test/java'
}
}
}
jar {
from ('./src') {
include 'META-INF/beans.xml'
}
}
有没有人知道为什么这不起作用?我从 Wildfly 中没有收到任何错误或异常信息。