0

我在 applicationContext 中定义了一个 Spring Bean,例如:

<bean id="spaceReader" class="com.company.SpaceReader">
</bean>

我希望能够在我的 Application Servlet 中访问这个 bean,而不必使用:

ApplicationContext context = new ClassPathXmlApplicationContext(CONTEXT_LOCATION);
context.getBean("SpaceReader");

我尝试使用以下方法导出它:

<bean id="ContextExporter" class="org.springframework.web.context.support.ServletContextAttributeExporter">
    <property name="contextExporterAttributes">
        <map>
            <entry key="SpaceReaderKey">
            <ref local="spaceReader" />
        </entry>
        </map>
    </property>
</bean>

但是当我将它注入 Servlet 时,它返回一个 Null 值。只是想知道当我导出 Bean 或尝试在 Servlet 中访问它时是否缺少某些东西?

4

1 回答 1

4

您甚至可以在 servlet 中使用注解来注入依赖项(SpringBeanAutowiringSupport对于这个 pourpose 有一个特殊的辅助类):

public class CustomServlet extends HttpServlet {

    @Autowired
    private ProductService productService;

   @Override
   public void init(ServletConfig config) throws ServletException {
      super.init(config);
      // inject productService dependency
      SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
   }

   ....

}
于 2013-07-05T14:08:00.337 回答