广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Spring通过Java配置集成Tomcat的方法
  • 600
分享到

Spring通过Java配置集成Tomcat的方法

2024-04-02 19:04:59 600人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

添加Tomcat依赖 <!-- 自己编译的版本--> <dependency> <groupId>org.apache</gro

添加Tomcat依赖


<!-- 自己编译的版本-->
<dependency>
    <groupId>org.apache</groupId>
    <artifactId>apache-tomcat-9.0.36-src</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

首先需要一个tomcat启动类


public class TomcatRun {

	private static final int PORT = 8080;
	private static final String CONTEXT_PATH = "/com/yu";

	public static void main(String[] args) {
		Tomcat tomcat = new Tomcat();
    // 设置监听端口
		tomcat.setPort(PORT);
		tomcat.getHost().setAppBase(".");
    // 这里 Connector 不存在,自动创建一个 Connector,并将 tomcat 的端口赋值给 Connector
		tomcat.getConnector();
		tomcat.addWEBapp(CONTEXT_PATH, new File("src/main/webapp").getAbsolutePath());
		try {
			tomcat.start();
		} catch (LifecycleException e) {
			e.printStackTrace();
		}
		tomcat.getServer().await();
	}
}

也可以自己创建一个Connector指定端口


// 手动创建 connector
// Connector connector = new Connector();
// connector.setPort(PORT);
// tomcat.getService().addConnector(connector);

创建spring配置


public class MyWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
	@Override
	protected Class<?>[] getRootConfiGClasses() {
		return new Class[]{RootConfig.class};
	}

	@Override
	protected Class<?>[] getServletConfigClasses() {
		return new Class[]{AppConfig.class};
	}

	@Override
	protected String[] getServletMappings() {
		return new String[]{"/*"};
	}

	@Override
	protected Filter[] getServletFilters() {
		return new Filter[]{
				//
				new CharacterEncodingFilter(StandardCharsets.UTF_8.name())
		};
	}
}

这里就结束了。。。


问题来了Tomcat是怎么启动Sping的?

实现了Servlet3.0的容器(例如Tomcat)会扫描classpath*下面的META-INF/services/javax.servlet.ServletContainerInitializer文件,里面指定ServletContainerInitializer的实现,另外还有一个注解HandlesTypes表达对某个类感兴趣,在调用onStartup方法时会将HandlesTypes指定接口的实现类传递进来。

例如:Spring中的ServletContainerInitializer实现类SpringServletContainerInitializer会调用WebApplicationInitializeronStartup方法,也就是上面定义的MyWebApplicationInitializer父类的onStartup,这里就会相继完成AnnotationConfigWebApplicationContextDispatcherServlet的初始化


@HandlesTypes(WebApplicationInitializer.class)
public class SpringServletContainerInitializer implements ServletContainerInitializer {

	@Override
	public void onStartup(@Nullable Set<Class<?>> webAppInitializerClasses, ServletContext servletContext)
			throws ServletException {

		List<WebApplicationInitializer> initializers = new LinkedList<>();

		if (webAppInitializerClasses != null) {
			for (Class<?> waiClass : webAppInitializerClasses) {
				// Be defensive: Some servlet containers provide us with invalid classes,
				// no matter what @HandlesTypes says...
				if (!waiClass.isInterface() && !Modifier.isAbstract(waiClass.getModifiers()) &&
						WebApplicationInitializer.class.isAssignableFrom(waiClass)) {
					try {
						initializers.add((WebApplicationInitializer)
								ReflectionUtils.accessibleConstructor(waiClass).newInstance());
					}
					catch (Throwable ex) {
						throw new ServletException("Failed to instantiate WebApplicationInitializer class", ex);
					}
				}
			}
		}

		if (initializers.isEmpty()) {
			servletContext.log("No Spring WebApplicationInitializer types detected on classpath");
			return;
		}

		servletContext.log(initializers.size() + " Spring WebApplicationInitializers detected on classpath");
		AnnotationAwareOrderComparator.sort(initializers);
		for (WebApplicationInitializer initializer : initializers) {
      // 调用WebApplicationInitializer实现类的onStartup方法
			initializer.onStartup(servletContext);
		}
	}

}

image-20210413234957179

到此这篇关于Spring通过Java配置集成Tomcat的文章就介绍到这了,更多相关Spring配置集成Tomcat内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Spring通过Java配置集成Tomcat的方法

本文链接: https://www.lsjlt.com/news/123555.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Spring通过Java配置集成Tomcat的方法
    添加Tomcat依赖 <!-- 自己编译的版本--> <dependency> <groupId>org.apache</gro...
    99+
    2022-11-12
  • 怎么在Spring中通过Java对Tomcat进行配置
    怎么在Spring中通过Java对Tomcat进行配置?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。添加Tomcat依赖<!-- 自己编译的版本...
    99+
    2023-06-14
  • spring集成httpclient配置的详细过程
    一、简介 HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新...
    99+
    2022-11-12
  • Spring通过配置文件管理Bean对象的方法
    目录一、Bean对象二、存储Bean对象1. 添加配置xml文件2. 创建上下文三、获取Bean对象提示:以下是本篇文章正文内容,Java系列学习将会持续更新 一、Bean对象 Be...
    99+
    2022-11-13
  • spring boot 配置Filter过滤器的方法
    Filter 过滤器是web开发中很重要的一个组件,下面以一个session登陆的例子介绍下spring boot中如何使用Filter首先要准备一个实现了Filter的接口的类 SessionFilter:import org.slf4j...
    99+
    2023-05-31
    spring boot 配置
  • Spring集成Druid连接池及监控配置的全过程
    目录前言如何集成Druid1、增加相关依赖2、配置DataSource3、配置项参数application.properties4、代码相关5、启动验证druid的内置filters...
    99+
    2022-11-12
  • Centos8通过VSFTPD配置FTPs的方法
    本篇内容介绍了“Centos8通过VSFTPD配置FTPs的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!vsftpd 是“very s...
    99+
    2023-06-27
  • SpringBoot集成slf4j日志配置的方法
    目录前言 1、slf4j概述 2、pom.xml的日志依赖 3、application.yml的日志配置 4、logback.xml配置文件定义 5、logback.xml配置文件解...
    99+
    2022-11-12
  • 通过Homebrew安装配置Redis的方法
    这篇文章主要介绍了通过Homebrew安装配置Redis的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。背景通过 Homebrew (htt...
    99+
    2022-10-18
  • tomcat负载均衡和集群配置的方法是什么
    Tomcat负载均衡和集群配置的方法有以下几种:1. 软件负载均衡:使用软件负载均衡器,如Nginx、Apache HTTP Ser...
    99+
    2023-09-07
    tomcat 负载均衡
  • SpringMVC集成redis配置的多种实现方法
    第一步:下载并安装Redis(网上已经有很多安装教程在此不细讲了) 第二步:pom文件引入jar包 在此需要注意Redis和jedis连接工厂版本 redsi:https://mvn...
    99+
    2022-11-12
  • SpringBoot集成短信和邮件的配置方法
    本文小编为大家详细介绍“SpringBoot集成短信和邮件的配置方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot集成短信和邮件的配置方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。准备工...
    99+
    2023-06-30
  • 教你在Spring Boot微服务中集成gRPC通讯的方法
    一、首先声明gRPC接口 这里引入的是最新的gRpc-core 1.37版本, 采用的grcp-spring-boot-starter封装的版本进行实现,github地址: http...
    99+
    2022-11-12
  • 单点登录之cas集成sonar的配置方法
    一、修改 sonar 配置 conf/sonar.properties 修改 sonar 配置文件 conf/sonar.properties: sonar.security.rea...
    99+
    2022-11-13
  • docker中通过nginx+confd动态生成配置的解决方案
    当我们项目越来越多时手动去服务器修改nginx配置是一件很麻烦而且可能出错的事情。我们可以通过nginx+confd+配置中心实现一套方案避免出错并减少繁琐的流程。 首先直接上ngi...
    99+
    2022-11-13
  • Springboot集成Jasypt实现配置文件加密的方法
    目录Jasypt介绍Jasypt好处应用场景使用方式实战使用Windows环境变量方式指定Linux环境变量方式进行指定Jasypt介绍 Jasypt是一个java库,它允许开发员以...
    99+
    2023-05-18
    Springboot集成Jasypt Springboot集成Jasypt文件加密
  • Gateway集成Netty服务配置加载的方法是什么
    这篇文章主要讲解了“Gateway集成Netty服务配置加载的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Gateway集成Netty服务配置加载的方法是什么”吧!一、Netty...
    99+
    2023-07-05
  • Springboot2 集成 druid 加密数据库密码的配置方法
    一:环境 springboot 2.x druid 1.1.21 二:druid加密数据库密码 本地下载druid-1.1.21.jar包,运行cmd,输入命令 java -cp...
    99+
    2022-11-12
  • 集成apollo动态日志取缔logback-spring.xml配置的方法
    这篇文章主要介绍“集成apollo动态日志取缔logback-spring.xml配置的方法”,在日常操作中,相信很多人在集成apollo动态日志取缔logback-spring.xml配置的方法问题上存在疑惑,小编查阅了各式资料,整理出简...
    99+
    2023-06-29
  • vscode通过Remote SSH远程连接及离线配置的方法
    安装 1、先安装vscode,然后在扩展中搜索Remote SSH插件并安装。 2、我要连接远程Ubuntu系统的服务器,所以需要在服务器上安装ssh并配置:   ...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作