Использование @ApplicationSetting довольно просто. Вы используете это так:
@Inject @ApplicationSetting
private String keyName;
keyName
возвращал ноль, потому что я использовал keyName
внутри конструктора. Он еще не инициализирован, поэтому он не будет работать.
@WebServlet("/example")
public class Example extends HttpServlet {
@Inject @ApplicationSetting
private String keyName;
public Example() {
something = keyName // keyName is null
}
...
}
Чтобы приведенный выше код работал, мне нужен метод жизненного цикла, отличный от конструктора. Кроме того, убедитесь, что ваш класс является компонентом CDI, чтобы иметь возможность использовать @Inject @ApplicationSetting
. Итак, исправление:
@WebServlet("/example")
public class Example extends HttpServlet {
@Inject @ApplicationSetting
private String keyName;
@Override
public void init() throws ServletException {
something = keyName // keyName is NOT null anymore :)
}
...
}