内容简介:Spring是为简化Java开发而生的。与传统的如Sturts这样的框架相比,它采用最小侵入编程,让开发者更少的感知到它的存在。随着Spring越来越强大,Spring体系也越来越复杂。为了化解戴着镣铐跳舞的窘境,产生了SpringBoot。SpringBoot的理念是约定大于配置。大家都这么用,有了规范,一切就容易多了。这就实现了一个标准化->流程化->工具化的跃迁。复杂度大大降低。但是一般一个web工具,引用一个jar包是搞不定的。依赖的冲突问题仍然是一个业界痛点。一般一个web项目使用SpringBo
Spring是为简化 Java 开发而生的。与传统的如Sturts这样的框架相比,它采用最小侵入编程,让开发者更少的感知到它的存在。随着Spring越来越强大,Spring体系也越来越复杂。为了化解戴着镣铐跳舞的窘境,产生了SpringBoot。
SpringBoot的理念是约定大于配置。大家都这么用,有了规范,一切就容易多了。这就实现了一个标准化->流程化->工具化的跃迁。复杂度大大降低。但是一般一个web工具,引用一个jar包是搞不定的。依赖的冲突问题仍然是一个业界痛点。
一般一个web项目使用SpringBoot最好显示的引入5个jar包,其中最后两个是测试用的,请注意统一版本。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
<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>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-test</artifactId>
<version>${spring.boot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring.boot.version}</version>
<scope>test</scope>
</dependency>
注意上面红色部分,显示的去掉对tomcat的依赖,使用jetty做容器。
嵌入式web容器和非嵌入式web容器的差别
这里想起自己在硅谷时的一件事情。
那时候公司里有一批同事都是之前netflix一个团队的,我刚到硅谷的时候,明显能感觉到他们的高傲。开始时,我出于习惯,那些同事在做一些事情的时候,我看到有些问题,我会告诉他们更好的方法和其中的原理。确实有许多我可以指导的地方,不是我技术有多好,而是他们都不是java出身的。对java没有那么精通。每次被我指出来问题,他们处理完总要露出鄙夷的面容,以后我就学聪明了,看到问题我也不说。
有次,有个同事问我国内用的什么web容器,我说用的tomcat。结果这个同事突然大笑,笑完还特意拉过来其他同事过来啥也不干就是一起笑。我问他们用的什么,他们也回答不上来。好吧,笑就笑吧,都是中国人,也不涉及什么有辱国威。我的人生已经彪悍的不需要解释了,压根就不在乎你们怎么看我。
后来有次,这个同事以为发现了我写的一个bug。所以拉上我,拉上很多开发一起围观再现我的bug。我们围在一起看他调试,结果我发现原来是他参数传错了。在他灰头土脸的时候,我只说了一句:“有问题再找我吧,我先回去了。”
因为我总是面对他们的质疑和嘲讽很低调,加上能干活,所以他们非常喜欢我,对我很nice,临走还特意给我饯行。签证到期回国再回来时,第一天他们就来找我,说我应该坐在他们中间,我们都是开发(只有我一个开发,其他都是产品,运营啥的)。总结一个经验:做人要低调,不要专门寻求认同,事情做好了自然有人认同你。
OK,先说他们为什么要笑:那是几年前的事情,那时候嵌入式的web容器在美国已经很流行了。但是那时候在国内,因为公司统一的标准还都是使用普通的web容器。一个新型的标准在大公司里普及确实没有这么快的。而嵌入式的web容器只是更便于DevOps,并没有什么性能和稳定性的差别。DevOps需要建立在公司统一基础设施的基础上,公司大了就有历史包袱,也是挺正常的。
有人说中国的互联网是国际领先的。这种领先是建立在需求驱动的基础上的。好比小时候我读《水浒》特别羡慕他们大口吃肉,现在我家小鲜肉早上给他煎牛排都已经不怎么吃了,天天换花样,劝饭这个费劲。现在物质发达,我倒觉得从这个方面看我小时候更幸福些,现在的小孩无欲无求。好比是硅谷,没有很强的外部驱动,有精力练就很扎实的基本功,很多人40多岁还是普通程序员。在中国工作两三年就带团队的大有人在,对 程序员 还是刚需,好像一个有很强消化能力的孩子。说不上哪个好哪个不好。
Tomcat和Jetty的差别
Tomcat和Jetty可以算的上是目前全球范围内最著名的两款Servlet容器。它们的实现都遵循Java Servlet规范。所以对于多数Java Web应用部署任意一个都可以。对应用开发来说,飞行中互换几乎是无感的。
从趋势来看,Jetty人气越来越盛。很大部分原因,大家在做选型的时候,都有一个业界调研,调研一线公司都是怎么用的。而目前Google App Engine选择了Jetty。这相当于是在云环境下,这是个默认的选择。
区别对照表
Tomcat | Jetty | |
轻量 | √ | × |
节省内存 | √ | × |
快速高效 | √ | × |
可插拔性 | √ | × |
可扩展性 | √ | × |
支持大规模企业级应用高级特性 | × | √ |
Jetty更满足分布式环境的需求,Tomcat有一些企业级环境使用的高级特性,一般用不到,用到时也是收费的。
结论:建议用Jetty。
相关阅读
SpringBoot优雅退出
你看不懂的spring原理是因为不知道这几个概念
专治不会看源码的毛病--spring源码解析AOP篇(2017版)
以上所述就是小编给大家介绍的《SpringBoot整合web容器》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- ASP.NET Core Docker 筆記 3 - 共用 Nginx 容器與 Certbot 整合
- SpringBoot整合MybatisPlus的简单教程(简单整合)
- springmvc教程--整合mybatis开发(spring+springMVC+mybatis整合开发)
- springboot整合springsecurity从Hello World到源码解析(五):springsecurity+jwt整合restful服务
- SSM整合搭建(二)
- SSM整合
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法设计与分析基础
莱维丁 (Anany Levitin) / 清华大学出版社 / 2013-5-1 / CNY 79.00
《算法设计与分析基础(第3版 影印版)》在讲述算法设计技术时采用了新的分类方法,在讨论分析方法时条分缕析,形成了连贯有序、耳目一新的风格。为便于学生掌握,本书涵盖算法入门课程的全部内容,更注重对概念(而非形式)的理解。书中通过一些流行的谜题来激发学生的兴趣,帮助他们加强和提高解决算法问题的能力。每章小结、习题提示和详细解答,形成了非常鲜明的教学特色。 《算法设计与分析基础(第3版 影印版)》......一起来看看 《算法设计与分析基础》 这本书的介绍吧!