Поле @Inject всегда равно нулю [дубликат]
На этот вопрос уже есть ответ здесь:
Доступ к внедренной зависимости в конструкторе управляемого компонента вызывает исключение NullPointerException 1 ответЯ пытаюсь @Inject поле (его jar-модуль, пустой файл beans.xml существует в META-INF), как это:
Интерфейс 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 всегда равен нулю (точка останова в конструкторе 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.