使用quartz做定时任务,任务需要定时到数据库查询,向查到记录的用户发送信息,因涉及到数据库查询,需要调用service,但通@Autowired注解不生效,通过上网查询并代码实现,做一下记录,方便以后看
/**
* 获取spring上下文里的bean,方便在普通类里也可以使用
* @author Administrator
*
*/
@Component //注册到spring容器
public final class SpringTool implements ApplicationContextAware{
private static ApplicationContext applicationContext = null;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (SpringTool.applicationContext == null) {
SpringTool.applicationContext = applicationContext;
}
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Object getBeanByName(String name) {
return getApplicationContext().getBean(name);
}
public static Object getBeanByClass(Class c) {
return getApplicationContext().getBean(c);
}
}
在需要使用的类或方法里调用
public static User getUser(){
UserService userService= (UserService)SpringTool.getBeanByClass(UserService.class);
User user = userService.findUserById(4);
return user;
}
自己在使用有效