0

我有一个想要添加ServletContextListener接口的现有类:

@Service
public class MyService {
    //...
}

@Component
public class MyController {
    @Autowired
    private MyService service;
}

这运行良好。但是一旦我添加public class MyService implements ServletContextListener,我就会收到以下错误MyController

org.springframework.beans.factory.BeanCreationException: Could not autowire field: private service. No qualifying bean of type [MyService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}.

该应用程序在Tomcat. 我的目标是@Override public void contextDestroyed()在tomcat关闭时清理这个特定服务中的一些资源。

这里有什么问题?

4

1 回答 1

3

既然你想执行清理任务,那么你应该@PreDestroy在你的 bean 中使用一个方法:

@Service
public class MyService {
    @PreDestroy
    public void cleanUp() {
        //free resources...
    }
}

Spring 应用程序上下文将在 bean 从上下文中销毁之前执行清理任务。

于 2015-10-05T14:41:07.207 回答