选择Spring Boot项目的内嵌容器的理由

网友投稿 330 2023-03-20


选择Spring Boot项目的内嵌容器的理由

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

Spring Boot继承了Spring的优点,并新增了一些新功能和特性:

(1)SpringBoot是伴随着Spring4.0诞生的,一经推出,引起了巨大的反向;

(2)从字面理解,Boot是引导的意思,因此SpringBoot帮助开发者快速搭建Spring框架;

(3)SpringBoot帮助开发者快速启动一个Web容器;

(4)SpringBoot继承了原有Spring框架的优秀基因;

(5)SpringBoot简化了使用Spring的过程;

(6)Spring Boot为我们带来了脚本语言开发的效率,但是Spring Boot并没有让我们意外的新技术,都是java EE开发者常见的额技术。

Spring Boot工程的默认web容器是Tomcat,但是开发人员可以根据需要修改,例如使用Jetty或者Undertow,Spring Boot提供了对应的starters。

How Do

在pom文件中排除tomcat的starter

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-tomcat

增加Jetty依赖

org.springframework.boot

spring-boot-starter-jetty

通过mvn spring-boot:run命令启动,可以看到Jetty已经启动。

Jetty容器启动

PS:如果您使用的gradle,则可以参考官方文档的做法——Use Jetty instead of Tomcat

分析

支持Kzdau上述切换的原因是Spring Boot的自动配置。我首先在spring-boot-starter-web依赖中排除Tomcat依赖,免得它跟Jetty形成依赖冲突。Spring Boot根据在classpath下扫描到的容器类的类型决定使用哪个web容器。

在IDEA中查看EmbeddedServletContainerAutoConfiguration类的内部结构,可以看到@ConditionalOnClass({Servlet.class, Server.class, Loader.class, WebAppContext.class})这样的条件匹配注解,如果在Jetty的Jar包中可以找到上述三个类的实例,则决定使用jetty容器。

@Configuration

@ConditionalOnClass({Servlet.class, Server.class, Loader.class, WebAppContext.class})

@ConditionalOnMissingBean( value = {EmbeddedServletContainerFactory.class}, search = SearchStrategy.CURRENT)

public static class EmbeddedJetty {

public EmbeddedJetty() {

}

@Bean

public JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory() {

// 返回容器工厂实例,用于构造容器实例

return new JettyEmbeddedServletContainerFactory();

}

}

同样得,可以看到对Tomcat也存在类似的判断和使用代码:

@Configuration

@ConditionalOnClass({Servlet.class, Tomcat.class})

@ConditionalOnMissingBean( value = {EmbeddedServletContainerFactory.class}, search = SearchStrategy.CURRENT)

public static class EmbeddedTomcat {

public EmbeddedTomcat() {

}

@Bean

public TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory() {

return new TomcatEmbeddedServletContainerFactory();

}

}

总结

以上所述是给大家介绍的选择Spring Boot项目的内嵌容器,希望对大家有所帮助,如果大家有任何疑问请给我留言,会及时回复大家的。在此也非常感谢大家对我们网站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:esb接口开发(esb接口开发教程)
下一篇:Java实现的properties文件动态修改并自动保存工具类
相关文章

 发表评论

暂时没有评论,来抢沙发吧~