SpringBoot中的配置servlet容器(使用不同的容器启动服务)

环境:JDK1.8、MAVEN 3.6.1、eclipse

1.配置tomcat的容器

由于当前的SpringBoot默认使用的Tomcat容器,所以不需要添加pom配置,查看官方文档:

org.springframework.boot.autoconfigure.web.ServerProperties
中存在servlet的配置了Tomcat的所有配置信息

1.1 创建Tomcat配置类(方式一)

当前的TomcatConfig

/**
 * @description 通过创建TomcatEmbeddedServletContainerFactory对象来实现当前的tomcat管理
 * @author hy
 * @date 2019-08-16
 */
@Configuration
public class TomcatConfig {
	//EmbeddedServletContainerFactory 查看当前的EmbeddedServletContainerFactory发现具有
	//tomcat、jetty、Undertow这几个的实现类,这里默认为tomcat
	@Bean
	public EmbeddedServletContainerFactory getEmbeddedServletContainerFactory() {
		TomcatEmbeddedServletContainerFactory tomcat=new TomcatEmbeddedServletContainerFactory("/springboot-tomcat", 8080);//设置当前的tomcat访问端口和地址
		tomcat.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"));
		return tomcat;
	}
}

1.2 创建入口类并测试

当前的Application类中的内容:

/**
 * @description 配置SpringBoot中的servlet容器
 * @author hy
 * @date 2019-08-16
 */
@RestController
@SpringBootApplication
public class Application 
{	
	@RequestMapping("/hi")
	public String hi() {
		return "【自定义server类!】";
	}
	
    public static void main( String[] args )
    {
       SpringApplication.run(Application.class, args);
    }
}

1.3 测试(方式一)

成功!

1.4 实现EmbeddedServletContainerCustomizer启动Tomcat容器(方式二)

当前的MyTomcatServletContainer类的内容如下:

/**
 * @description 1.通过实现EmbeddedServletContainerCustomizer来进行代码的配置server
 * @author hy
 * @date 2019-08-16
 */
@Component
public class MyTomcatServletContainer implements EmbeddedServletContainerCustomizer {

	public void customize(ConfigurableEmbeddedServletContainer container) {
		container.setPort(8888);// 设置端口
		container.setContextPath("/springboot-tomcat");// 设置访问路径
		//Root ContextPath must be specified using an empty string,当前的contextpath不能设置为/
		container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html"));
	}
}

1.5 测试(方式二)

成功!

2.使用Jetty容器启动

2.1 添加pom依赖

当前的pom文件:

    
		UTF-8
	

	
		org.springframework.boot
		spring-boot-starter-parent
		1.2.4.RELEASE
		
	

	
		
			org.springframework.boot
			spring-boot-starter-web
		
		
		
			org.springframework.boot
			spring-boot-starter-jetty
		
		
			junit
			junit
			test
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
				
					1.8
					1.8
				
			
		
	

2.2 启动jetty

EmbeddedServletContainerFactory 查看当前的EmbeddedServletContainerFactory发现具有
tomcat、jetty、Undertow这几个的实现类,这里默认为tomcat

方式一:还是直接使用MyTomcatServletContainer一样可以启动,显示当前的jetty启动了
方式二:修改TomcatConfig中的 getEmbeddedServletContainerFactory方法,返回为JettyEmbeddedServletContainerFactory这个实现类,测试都可以实现

3. 总结

1.使用SpringBoot的时候跟换容器的时候需要导入对应的依赖

2.使用SpringBoot中跟换容器有两种方式:

  • 1.直接实现EmbeddedServletContainerCustomizer ,当前的内容可以改变启动容器,当前容器改变的时候不需要修改,也可以启动
  • 2.创建EmbeddedServletContainerFactory相对应的实现类,缺点:当容器修改的时候,需要修改不同的实现类。

以上纯属个人见解,如有问题请联系本人!

你可能感兴趣的:(SpringBoot)