用内置tomcat开发时是没有问题的,打算部署到服务器用外部tomcat测试时发现定时器的计算类执行了两次
查了各种资料,有如下可能性
1.springboot 的内置tomcat没有去掉,导致springboot 和tomcat 分别启动了1次
去掉内置tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 去除内嵌tomcat -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加servlet的依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
2.完全是tomcat 启动了两次
在tomcat 的server.xml中 把host的appBase 换为“”,然后启动就好了
或者你在tomcat内部新建一个webroot 文件夹 然后把appBase换成webroot 也可以
就是host 和context 分别启动了两次
3、将springboot 启动类 @SpringBootApplication的类 把extends 的内容去掉
我的是第三种办法解决的