@TOC
WebSocket和Scheduler同时使用出现"org.springframework.beans.factory.BeanNotOfRequiredTypeException"
解决办法
注释掉@EnableScheduling,手动将TaskScheduling放到容器中,且名称不容易重复(注入的名字也就是方法的名称)
/**
* @Author zsl
* @Date 2021/12/29 9:44
*/
@SpringBootApplication
@EnableTransactionManagement // 事务
@EnableAspectJAutoProxy // AOP
@ServletComponentScan // 扫描 Servlet 注解(@WebFilter、@WebListener、@WebServlet)
//@EnableScheduling // 定时器
@EnableAsync
//@EnableSwagger2
public class LoginApp {
public static void main(String[] args) {
SpringApplication.run(LoginApp.class, args);
}
/**
* 替换@EnableScheduling注解,避免与@EnableWebSocket冲突
*/
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler scheduling = new ThreadPoolTaskScheduler();
scheduling.setPoolSize(10);
scheduling.initialize();
return scheduling;
}
}
原因
应该是内部原因@EnableScheduling与@EnableWebSocket注解的使用冲突
参考文章
springboot使用定时注解 启动报错 :Bean named ‘defaultSockJsTaskScheduler’ is expected to be of type