gpt4 book ai didi

java - 无法@AutoWire @WebServlet 中的成员

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:47:26 26 4
gpt4 key购买 nike

我似乎无法将我的 servlet 字段发送给@AutoWire;他们最终为空。我有一个纯注释配置的 webapp(没有 XML 文件)。我的 servlet 看起来像这样:

@WebServlet("/service")
public
class
SatDBHessianServlet
extends HttpServlet
{
@Autowired protected NewsItemDAO mNewsItemDAO;
}

其他@AutoWired 似乎工作正常,包括@Service 对象和@Repository 对象。但不是这个,我不明白为什么。我什至尝试将它的包添加到我的其他类的 ComponentScan(basePackages) 列表中。

附加信息:

我将以下内容添加到我的 servlet 的 init() 方法中,一切似乎都已正确连接,但我很困惑为什么 Spring 没有它就不能连接它。

SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, inConfig.getServletContext());

最佳答案

Servlet 是不是由 Spring 容器创建的 Web 组件,基于该生命周期不由容器管理,并且 Spring 提供的许多东西,例如 Autowiring 或方面不能从它们运行。

您需要向 spring 容器表明一个组件是在 IoC 容器之外创建的,并且需要成为它的一部分。

正如 API 所说,SpringBeanAutowiringSupport 用于:

Convenient base class for self-autowiring classes that gets constructed within a Spring-based web application

这个通用的 servlet 基类不依赖于 Spring ApplicationContext 概念。

还有另一种方法可以使用接口(interface)指示由 spring 容器创建的 servlet

关于java - 无法@AutoWire @WebServlet 中的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22291894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com