номер
Экземпляры сервлета создаются контейнером посредством отражения, и они ожидают найти открытый конструктор без аргументов (конструктор по умолчанию).
Чтобы настроить свой сервлет, используйте параметры сервлета, указанные в файле web.xml. Они передаются в ваш сервлет init()
метод.
В то время как возможно для контейнера сервлета выбрать конструктор не по умолчанию и привести строки символов к простым типам и рефлекторно вызвать конструктор, это не то, чего требует спецификация сервлета. *
Часть причины может быть исторической; сервлеты были впервые заданы задолго до того, как системы внедрения зависимостей широко применили эту альтернативу. Однако такие конструкторы были бы довольно ограничены; было бы целесообразно передавать аргументы, которые могут быть созданы из простой символьной строки, указанной в файле web.xml, но более полезные объекты & mdash; a DataSource
, например & mdash; будут неудобны.
Было бы неплохо иметь в сервлете конечные переменные-члены.
JSR, ранее известный как "WebBeans" (я думаю, что JSR 299), предоставит некоторые стандарты для поддержки внедрения зависимостей в сервлетах. Это может устранить некоторые недостатки текущего подхода.