Access Spring beans from a servlet in JBoss Access Spring beans from a servlet in JBoss spring spring

Access Spring beans from a servlet in JBoss


There is a much more sophisticated way to do that. There is SpringBeanAutowiringSupportinside org.springframework.web.context.support that allows you building something like this:

public class MyServlet extends HttpServlet {  @Autowired  private MyService myService;  public void init(ServletConfig config) {    super.init(config);    SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,      config.getServletContext());  }}

This will cause Spring to lookup the ApplicationContext tied to that ServletContext (e.g. created via ContextLoaderListener) and inject the Spring beans available in that ApplicationContext.


Your servlet can use WebApplicationContextUtils to get the application context, but then your servlet code will have a direct dependency on the Spring Framework.

Another solution is configure the application context to export the Spring bean to the servlet context as an attribute:

<bean class="org.springframework.web.context.support.ServletContextAttributeExporter">  <property name="attributes">    <map>      <entry key="jobbie" value-ref="springifiedJobbie"/>    </map>  </property></bean>

Your servlet can retrieve the bean from the servlet context using

SpringifiedJobbie jobbie = (SpringifiedJobbie) getServletContext().getAttribute("jobbie");


I've found one way to do it:

WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletContext());SpringifiedJobbie jobbie = (SpringifiedJobbie)context.getBean("springifiedJobbie");