【发布时间】:2017-07-30 16:45:21
【问题描述】:
我正在使用 Spring Boot,但无法在服务 bean 中注入任务执行器。 这是一些代码:
@Service
public class ClassA {
@Autowired
private ThreadPoolTaskExecutor taskExecutor;
public void doSht(){
for(int i = 0; i<this.taskExecutor.getMaxPoolSize(); i++){
this.taskExecutor.execute(new ClassB());
}
}
}
B类:
public class ClassB implements Runnable {
@Override
public void run() {
System.out.println("Class B running");
}
}
控制器:
@Controller
public class IndexController {
@Autowired
ClassA ca;
@RequestMapping("/")
public String index(){
return "index";
}
@RequestMapping("test")
public String test(ClassA ca){
ca.doSht();
return "test";
}
}
这里是任务执行器配置:
@SpringBootApplication
public class App{
@Bean
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setCorePoolSize(5);
taskExecutor.setMaxPoolSize(10);
taskExecutor.setQueueCapacity(30);
return taskExecutor;
}
public static void main(String[] args) throws Exception{
SpringApplication app = new SpringApplication(App.class);
app.run(args);
}
}
我希望在请求到达 /test 时执行 ClassB 实例,但我收到 NullPointerException,因为任务执行器没有自动装配到 ClassA bean 中。
我做错了什么?
【问题讨论】:
-
你可以查看帖子stackoverflow.com/questions/11787313/…它对你有帮助
标签: java spring spring-boot