Инъекция CDI всегда нулевая
Привет, я пытаюсь ввести объект в моем коде. Но по какой-то причине он останется нулевым.
Следующие вещи, которые я пробовал; Добавление PostConstruct(который не называется...) Удаление других частей CDI, чтобы просто заработал первый впрыск. Также проверяется, включен ли CDI в Payara.
Я добавил bean.xml в meta-inf и web-inf
Краткая версия кода, где я называю боб.
public class MovieFacade implements iMovieFacade {
@Inject
private iMovieDao md;
@PostConstruct
void init(){
System.out.println(md);//I do this to test if the postConstruct is called
}
public List<Movie> getAllMovie() {
return md.getAllMovies();
}
}
Код короткого класса я пытаюсь назвать.
@ApplicationScoped
public class MovieDao implements iMovieDao {
private DataStoreMaker dataStoreMaker;
private DCM dcm;
@PostConstruct
private void onInit(){
dataStoreMaker = new DataStoreMaker();
dcm = new DCM(dataStoreMaker.movieDS());
}
public List<Movie> getAllMovies(){
List<Movie> ml = dcm.find().asList();
return ml;
}
}
Интерфейс
public interface iMovieDao {
void newMovie(Movie movie);
Movie getId(String id);
List<Movie> getAllMovies();
void editMovie(Movie movie);
}
1 ответ
В Java EE ваш MovieFacade должен быть bean-компонентом, которым должен управлять контейнер (иметь жизненный цикл). Для этого просто добавьте аннотацию по вашему выбору, например @Stateless.
@Stateless
public class MovieFacade implements iMovieFacade {
@Inject
private iMovieDao md;
@PostConstruct
void init(){
System.out.println(md);//I do this to test if the postConstruct is called
}
public List<Movie> getAllMovie() {
return md.getAllMovies();
}
}