错误截图:
原本以为是Springboot版本的原因,于是换成低版本的1.4.7也无济于事,我这里使用springboot2.1.3版本;
这个类位于tomcat-embed这个jar下面,这里的解决方法并不是像网上大部分所说的手动添加这个jar,因为这是由于没有添加spring-boot-starter-web依赖造成的。
springboot项目默认会添加spring-boot-starter和spring-boot-starter-test两个依赖,而web项目需要spring-boot-starter-web依赖。
下面对比一下spring-boot-starter和spring-boot-starter-web这两个依赖的区别:
spring-boot-starter-web:
spring-boot-starter,没有web:
所以在maven里添加下面这个依赖即可:
<dependencies>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependencies>
这是Druid连接池配置相关代码:
import java.sql.SQLException;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.google.common.collect.Lists;
@Configuration
public class DruidConfig {
@ConfigurationProperties(prefix="spring.druid")
@Bean(initMethod="init",destroyMethod="close")
public DruidDataSource dataSource(Filter statFilter) throws SQLException{
DruidDataSource dataSource = new DruidDataSource();
dataSource.setProxyFilters(Lists.newArrayList(statFilter()));
return dataSource;
}
@Bean
public Filter statFilter(){
StatFilter filter = new StatFilter();
filter.setSlowSqlMillis(5000);
filter.setLogSlowSql(true);
filter.setMergeSql(true);
return filter;
}
@Bean
public ServletRegistrationBean servletRegistrationBean(){
return new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
}
}
报错的位置是这部分
引入web依赖后,完美解决了问题: