目前,在我的基于spring mvc的应用程序中,我也实现了servlet(这是一个健康检查servlet)。我试图使用@Autowire注解在这个servlet中注入一个类的依赖项,但这个类并没有实例化。
请考虑下面的代码。
@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类的依赖关系吗?
提前谢谢。
发布于 2018-05-30 22:04:15
这不是Spring托管bean。尝试将@Component添加到类声明中。
@Component
@WebServlet(name = "myServlet", urlPatterns = "/app2")
public class HealthCheckController extends HealthCheckServlet{您也可以尝试将您的类重构为Spring控制器:
@Controller
@RequestMapping("app2")
public class HealthCheckController extends HealthCheckServlet{您可以尝试的另一件事是在web.xml中添加servlet,而不是使用@WebServlet注释。
<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>发布于 2018-05-31 00:38:18
添加注释中提到的'@Controller‘并更新您的URL映射。另外,是什么在调用isHealthy()?尝试在那里添加您的url映射。
@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();
}
}https://stackoverflow.com/questions/50606679
复制相似问题