1.在不受spring管理的类里面使用spring的bean
public class SyncRouteMapTask extends TimerTask {
private static final Logger logger = LoggerFactory.getLogger(SyncRouteMapTask.class);
private RouteMapRedisService routeMapRedisService;
public SyncRouteMapTask(RouteMapRedisService routeMapRedisService) {
this.routeMapRedisService = routeMapRedisService;
}
@Override
public void run() {
try {
routeMapRedisService.updateRouteInfo(false);
} catch (Exception e) {
logger.error("|SyncRouteMapTask|Exception|", e);
}
}
}
SyncRouteMapTask并没有被spring管理,其成员属性routeMapRedisService
SyncRouteMapTask的构造函数,其参数传进来的时候是一个bean对象,这样就可以把这个bean对象传进去,SyncRouteMapTask将其当成普通对象使用
@Override
public void syncRouteMap() {
Timer timer = new Timer();
SyncRouteMapTask task = new SyncRouteMapTask(routeMapRedisService);
timer.schedule(task, 0, syncTime);
}
2.参考这个wiki