我正在尝试学习Spring启动,我注意到有两种选择。
spring-boot-starter-web - 根据文档提供对全栈Web开发的支持,包括Tomcat和web-mvc
弹簧引导起动的Tomcat
由于#1支持Tomcat,为什么要使用#2?
有什么区别?
谢谢
答案 0 :(得分:25)
由于#1支持Tomcat,为什么要使用#2?
spring-boot-starter-tomcat
包含spring-boot-starter-tomcat
。如果不需要spring mvc,则可以单独使用spring-boot-starter-web
(包含在spring-boot-starter-web
中)。
以下是spring-boot-starter-web
的依赖关系层次结构:
有什么区别?
spring-boot-starter-tomcat
包含spring web依赖项(包括spring-boot-starter
):
jackson
spring-core
spring-mvc
spring-boot-starter-tomcat
spring-boot-starter-tomcat
core
包含与嵌入式tomcat服务器相关的所有内容:
el
logging
websocket
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
如果你想在没有嵌入式tomcat服务器的情况下使用spring mvc会怎样?
只需将其从依赖项中排除:
import QtQuick 2.4
import QtQuick.Window 2.2
Window {
visible: true
width: 500
height: 500
ListModel {
id: myModel
ListElement {
color: "red"
text: "some interesting information"
}
ListElement {
color: "blue"
text: "not so interesting information"
}
ListElement {
color: "green"
text: "and some more information"
}
}
ListView {
anchors.fill: parent
interactive: false
model: myModel
delegate: Rectangle {
width: parent.width
height: 30
color: model.color
TextEdit {
anchors.centerIn: parent
text: model.text
selectByMouse: true
}
}
}
}
答案 1 :(得分:5)
一个简单的答案是,并非所有Web应用程序都是SpringMVC应用程序。例如,如果您希望使用JaxRS,或许您有使用RestTemplate的客户端应用程序,并且您喜欢它们如何交互,那么它并不意味着您不能使用spring boot或嵌入式tomcat
以下是使用spring-boot-starter-tomcat
但不使用spring-boot-starter-web
使用spring-boot-starter-tomcat
记住tomcat不是Spring引导中嵌入式servlet容器的唯一选择也很重要。使用码头也很容易上手。使用spring-boot-starter-tomcat
可以轻松地将所有模块排除在一个模块中,而如果它们只是spring-web的一部分,则排除tomcat库以引入spring-boot-starter-jersey
而不是
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
我在这里从另一个SO问题复制了这段代码。