Estoy usando Spring framework (2.5.4) en mi aplicación con Load time weaving y todo funciona bien en todas partes (en Spring beans, en entidades que no son Spring), excepto cuando trato de autoconectar el campo en un servlet anotado como @Configurable, cuando me siento un buen NullPointerException ...Spring @Autowired en Servlet
@Configurable(dependencyCheck=true)
public class CaptchaServlet extends HttpServlet{
@Autowired
private CaptchaServiceIface captchaService;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
// ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext());
// captchaService = (CaptchaServiceIface) ctx.getBean("captchaService");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Captcha c = captchaService.getCatpcha();
req.getSession().setAttribute("captchaAnswer", c.getAnswer());
resp.setContentType("image/png");
ImageIO.write(c.getImage(), "png", resp.getOutputStream());
}
}
<context:load-time-weaver/>
<context:spring-configured/>
<context:component-scan base-package="cz.flexibla2" />
Cualquier sugerencia acerca de lo que estoy haciendo mal?
Gracias.
No estoy seguro, pero puede ser porque la clase de servlet es cargada por el contenedor de servlet y no por el contenedor de resorte. –
@ abhin4v: La idea detrás del entrelazado en tiempo de carga es permitir que cualquier cosa cargue la clase, no solo por Spring. – skaffman
@malejpavouk, ¿cuál es la solución final para dicho comportamiento? ¿Puedes compartirlo? –