当将Springboot maven项目(版本2.3.4.release)部署到外部Tomcat容器时,官方指南说您需要按照提供的方式标记“spring-boot-starter-tomcat”依赖项,但实际上即使不这样做,包含“spring-boot-starter-tomcat”、“tomcat-embed-core”和“tomcat-embed-websocket”等lib的最终war包在Tomcat8.5.54或Tomcat9.0中也可以正常工作,所以我对此感到困惑,“我们真的需要将spring-boot-starter-tomcat设置为提供的吗?”有人能解释为什么吗?“传统部署”
您不希望在类路径上有相同类的多个版本。这会在运行时导致许多错误。例如,如果您有一个
public class MyServlet implements javax.servlet.Servlet
并且将myservlet.class
和javax.servlet-api.jar
(其中包含javax.servlet.servlet
)打包到应用程序中,可能会出现错误:
Servlet class MyServlet is not a javax.servlet.Servlet
发生的情况是:当应用程序classloader加载MyServlet
时,它首先在应用程序中查找javax.servlet.servlet
,然后在javax.servlet-api.jar
中找到它。服务器将这个类与服务器的classloader加载的类进行比较,并得出结论认为它们是不同的,因为来自不同JAR的类是不相等的。如果不提供javax.servlet-api.jar
,则不会出现这种情况:classloader在它自己的类路径中找不到javax.servlet.servlet
,所以它在父类loader中查找。
TL;DR:由于上面的注释,将spring-boot-starter-tomcat
留在compile
作用域中可能没有坏处,但这是一个不值得冒的风险。
本文向大家介绍为什么要用 spring boot?相关面试题,主要包含被问及为什么要用 spring boot?时的应答技巧和注意事项,需要的朋友参考一下 配置简单 独立运行 自动装配 无代码生成和 xml 配置 提供应用监控 易上手 提升开发效率
我正在为单页应用程序使用新的msal . js(https://www . NPM js . com/package/@ azure/msal-browser)。好消息是我已经搞定了!因此,在登录azure ad后,我通过访问代码被重定向到我的应用程序,msal通过该代码从azure代码中获取access token/refresh token/id token。 之后,我将使用accesstok
根据https://docs.spring.io/spring-boot/docs/2.0.0.m5/reference/html/howto-embedded-web-servers.html和spring-boot-starter-web的pom:https://search.maven.org/artifact/org.springframework.boot/spring-boot-sta
问题内容: 在Spring Boot中,模式上有一些jar 。所有这些罐子都不包含任何包装。它们有什么用? 在Maven POM中,添加了以下依赖项: org.springframework.boot:spring-boot-starter-web org.springframework.boot:spring-boot-starter-actuator org.springframework.b
我的项目root目录下pom文件添加了springboot的依赖 前端的目录下pom中添加了,要用到@restcontroller 然后一堆包冲突,是不是我的做法有错误,还是版本问题?
简介 ShardingSphere-JDBC 提供官方的 Spring Boot Starter,使开发者可以非常便捷的整合 ShardingSphere-JDBC 和 Spring Boot。 数据源配置 spring.shardingsphere.schema.name= # JDBC数据源别名 spring.shardingsphere.datasource.names= # 数据源名称,