Nedávno jsem při používání Listeneru narazil na problém, že pružina nemohla být injekčně vložena, kód je následující, tato úloha je vždy null, balíček byl zjevně smeten, ale nelze ho injektovat.
Důvod je následující: posluchač Listener nemůže aplikovat zrno pomocí @Resource kontejneru Spring nebo metody @Autowired anotace, protože v kontejneru webového serveru,Ani Servlet, Filter, ani Listener nejsou spravovány pomocí Spring kontejnerů,Proto nemůžeme v těchto třídách přímo použít metodu Spring annotation k injekci potřebných objektů。 Zde je celý životní cyklus servletu spravován schránkou servletu. Pokud ho vložíte do Spring kontejneru, aby vznikl, může být servletový objekt vytvořen Spring kontejnerem, ale servletový kontejner nemusí vědět, že servlet existuje, protože není ve svém vlastním kontejneru. Proto je servlet spravován webovým serverem, nikoli springem.
Proveďte následující úpravy:
Z kontextu jara to problém vyřešilo dokonale.
|