首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Spring MVC4的Servlet中注入依赖?

如何在Spring MVC4的Servlet中注入依赖?
EN

Stack Overflow用户
提问于 2018-05-30 22:01:10
回答 2查看 569关注 0票数 1

目前,在我的基于spring mvc的应用程序中,我也实现了servlet(这是一个健康检查servlet)。我试图使用@Autowire注解在这个servlet中注入一个类的依赖项,但这个类并没有实例化。

请考虑下面的代码。

代码语言:javascript
复制
@WebServlet(name = "myServlet", urlPatterns = "/app2")
public class HealthCheckController extends HealthCheckServlet{

/** The Constant serialVersionUID. */

    private static final long serialVersionUID = 1L;

    @Autowire
      private MyService service;

    /**
     * method to check healthiness.
     *
     * @return true, if is healthy
     * @throws HealthCheckException the health check exception
     */
    @Override
    public boolean isHealthy() throws HealthCheckException {
        try {
            service.showDetails("12", false,null);
            System.out.println("True");
            return true;
        } catch (Exception  e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return false;
    }

你能建议我如何提供MyService类的依赖关系吗?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-05-30 22:04:15

这不是Spring托管bean。尝试将@Component添加到类声明中。

代码语言:javascript
复制
@Component
@WebServlet(name = "myServlet", urlPatterns = "/app2")
public class HealthCheckController extends HealthCheckServlet{

您也可以尝试将您的类重构为Spring控制器:

代码语言:javascript
复制
@Controller
@RequestMapping("app2")
public class HealthCheckController extends HealthCheckServlet{

您可以尝试的另一件事是在web.xml中添加servlet,而不是使用@WebServlet注释。

代码语言:javascript
复制
<servlet>
    <servlet-name>myServlet</servlet-name>
    <servlet-class>mypackage.HealthCheckController</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>myServlet</servlet-name>
    <url-pattern>/app2</url-pattern>
</servlet-mapping>
票数 0
EN

Stack Overflow用户

发布于 2018-05-31 00:38:18

添加注释中提到的'@Controller‘并更新您的URL映射。另外,是什么在调用isHealthy()?尝试在那里添加您的url映射。

代码语言:javascript
复制
@Controller
public class HealthCheckController extends HealthCheckServlet{

private static final long serialVersionUID = 1L;

@Autowire
  private MyService service;

@RequestMapping("/app2/*")
public boolean isHealthy() throws HealthCheckException {
    try {
        service.showDetails("12", false,null);
        System.out.println("True");
        return true;
    } catch (Exception  e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50606679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档