Как Spring свързва OncePerRequestFilter с неговите init-param стойности?

Имам прост OncePerRequestFilter с няколко init-param записа, дефинирани в моя web.xml, но не знам как да получа достъп до тях от филтъра. getFilterConfig() връща null. init(FilterConfig) документи звучи така, сякаш ще направи инжектиране в свойствата на bean въз основа на името на init-param, например стойността на параметър с име foo ще има инжектирана стойност в свойство на филтъра с име foo, но известно регистриране в doFilterInternal изглежда показва, че това не се случва.

Тъй като съм сравнително нов в модерния Spring (последно го използвах около 1.x дните) и напълно нов в Spring MVC, почти съм сигурен, че съм пропуснал нещо очевидно, но не мога да видя какво е то. Благодаря за всяка помощ.


person Hank Gay    schedule 27.04.2011    source източник


Отговори (1)


Стойностите init-param се съпоставят със свойствата на самия филтър.

public MyFilter extends OncePerRequestFilter {

    // the following should be called once the `GenericFilterBean` `init` method has run        
    public void setFoo(String foo){
         this.foo = foo;
    }
}


<filter>
     <init-param>
          <param-name>foo</param-name>
          <param-value>bar</param-value>
     </init-param>
</filter>
person Gareth Davis    schedule 28.04.2011
comment
Това беше моето четене на документите, но тестването показа, че не се случва по някаква причина. В крайна сметка просто се отказах и дефинирах стойностите в моя applicationContext.xml, което имаше допълнителното предимство да улесни дефинирането на списък със стойности за свойството. - person Hank Gay; 28.04.2011
comment
ммм... Наистина го прави или поне последния път, когато го използвах (преди около 2-3 години), ако все още е проблем, опитайте да добавите точка на прекъсване в GenericFilterBean#init(FilterConfig). Като проверка на здравината можете да добавите addRequiredProperty("wibble") към вашия beans конструктор.. трябва да се взриви. - person Gareth Davis; 28.04.2011
comment
Заключих, че трябва да имам нещо странно в моята среда и тръгнах по друг път, но приех този отговор, защото съвпада с документираното поведение. - person Hank Gay; 13.05.2011
comment
Това също не работи за мен, имам метод за настройка, който никога не е бил извикан от Spring, накрая бях предал аргументи на моя spring bean, вместо да дефинирам init параметри в web.xml - person Sagar Jani; 20.09.2018