在java框架中由于涉及定时任务、SSO、webservice等类中涉及调取service使用@Autowired不生效,是因为此类不受spring托管,自然注解是不好使的,下面介绍方法。
SpringTool.java
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class SpringTool implements ApplicationContextAware {
private static ApplicationContext applicationContext = null;
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (SpringTool.applicationContext == null) {
SpringTool.applicationContext = applicationContext;
}
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static Object getBean(String name) {
return getApplicationContext().getBean(name);
}
}
调取:
public class Task {
private TaskService taskService;
public void main(){
try {
taskService = (TaskService) SpringTool.getBean("taskService");
Integer num = taskService.queryCount();
} catch (Exception e) {
e.printStackTrace();
}
}
}