web.xml:Frühling Injektion in Filter Implementierung abgebildet in web.xml
<filter>
<filter-name>myFilter</filter-name>
<filter-class>com.mypackage.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/myFilterPattern/*</url-pattern>
</filter-mapping>
MyFilter:
public class MyFilter implements Filter {
@Autowired
InjectedBean someInjectedBean;
Wenn jedoch das Abfangen /myFilterPattern/*
Anfragen, someInjectedBean
in MyFilter.doFilter(...)
noch null ist, was bedeutet, es hat nicht injiziert worden. Dieselbe Bean (InjectedBean
) wird in anderen Kontextkomponenten, die in web.xml nicht referenziert sind, ordnungsgemäß eingefügt.
Liegt das daran, dass die Containerfilterung außerhalb des Spring-Kontextes stattfindet? Gibt es eine Möglichkeit, eine Spring-Injektion in der Filterimplementierung in web.xml zu erstellen?
meinst du "eine Bohne mit dem Namen ** myFilterBean ** in deinem Frühlingskontext erstellen"? – amphibient
Ja Erstellen Sie eine Bean mit dem Namen myFilterBean vom Typ MyFilter. MyFilter kann GenericFilterBean erweitern. –
was denken Sie, sollte der Umfang dieser Bohne im Zusammenhang sein? Sitzung? – amphibient