je veux utiliser le câblage automatique à ressort dans le servlet alors voici mon code:
@Configurable
public class ImageServlet extends HttpServlet {
@Autowired
private SystemPropertyDao systemPropertyDao;
@Override
public void init() throws ServletException {
String imagePath = systemPropertyDao.findByID(StaticParam.CONTENT_FOLDER);
}
tandis que le SystemPropertyDao
est annoté avec @Repository
et mon applicationContext.xml:
<context:component-scan base-package="com.basepackage" />
<mvc:annotation-driven />
<context:annotation-config />
<context:spring-configured/>
web.xml:
<servlet>
<servlet-name>imageServlet</servlet-name>
<servlet-class>com.xeno.basepackage.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>imageServlet</servlet-name>
<url-pattern>/myimages/*</url-pattern>
</servlet-mapping>
parfois le câblage automatique fonctionne et parfois non (la référence au système de haricot de printempsPropertyDao est nulle), quelqu'un peut-il me dire s'il me manque quelque chose?
J'ai suivi la solution dans le lien suivant, et cela fonctionne très bien: Accéder aux beans Spring à partir d'un servlet dans JBoss
public class MyServlet extends HttpServlet {
@Autowired
private MyService myService;
public void init(ServletConfig config) {
super.init(config);
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
config.getServletContext());
}
}
Retirer le @Configurable
annotation de votre servlet et ajoutez:
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext (this);
à la première ligne de votre méthode init ().