我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么在Spring中通过Java对Tomcat进行配置

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么在Spring中通过Java对Tomcat进行配置

怎么在Spring中通过Java对Tomcat进行配置?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

添加Tomcat依赖

<!-- 自己编译的版本--><dependency>    <groupId>org.apache</groupId>    <artifactId>apache-tomcat-9.0.36-class="lazy" data-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 的端口赋值给 Connectortomcat.getConnector();tomcat.addWebapp(CONTEXT_PATH, new File("class="lazy" data-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 {@Overrideprotected Class<?>[] getRootConfigClasses() {return new Class[]{RootConfig.class};}@Overrideprotected Class<?>[] getServletConfigClasses() {return new Class[]{AppConfig.class};}@Overrideprotected String[] getServletMappings() {return new String[]{"/*"};}@Overrideprotected 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 {@Overridepublic 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);}}}

怎么在Spring中通过Java对Tomcat进行配置

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

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么在Spring中通过Java对Tomcat进行配置

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

下载Word文档

猜你喜欢

怎么在Spring中通过Java对Tomcat进行配置

怎么在Spring中通过Java对Tomcat进行配置?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。添加Tomcat依赖
2023-06-14

怎么在Java中对DBeaver进行配置

本篇文章为大家展示了怎么在Java中对DBeaver进行配置,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、JDK环境配置这里演示的是win7系统下JDK是jdk-6u43-windows-i58
2023-06-14

怎么在Spring boot中对多线程进行配置

这篇文章给大家介绍怎么在Spring boot中对多线程进行配置,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、配置线程配置类package test;import java.util.concurrent.Exec
2023-05-30

使用spring怎么对JavaConfig进行配置

今天就跟大家聊聊有关使用spring怎么对JavaConfig进行配置,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、规则规则一:@Configuration注解我们在定义Java
2023-05-31

怎么在MyBatis中对properties进行配置

本篇文章为大家展示了怎么在MyBatis中对properties进行配置,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,
2023-05-30

如何在spring中对配置文件进行加密

这篇文章将为大家详细讲解有关如何在spring中对配置文件进行加密,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。通过继承spring配置类并重写处理方法实现密文解密public class
2023-05-30

怎么对Spring Boot配置文件进行多环境配置

这期内容当中小编将会给大家带来有关怎么对Spring Boot配置文件进行多环境配置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一. 多环境配置的好处:1.不同环境配置可以配置不同的参数~2.便于部署,
2023-05-31

如何在Java中对Apollo配置进行更新

这期内容当中小编将会给大家带来有关如何在Java中对Apollo配置进行更新,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开
2023-06-06

怎么在Windows环境中对Maven进行配置

本篇文章给大家分享的是有关怎么在Windows环境中对Maven进行配置,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Maven在Windows下的配置1.下载Maven2.解
2023-05-31

怎么在linux命令行中对网络进行配置

这篇文章将为大家详细讲解有关怎么在linux命令行中对网络进行配置,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。除了通用的ifconfig外,对于Redhat/Fedora发行版,有专用的配
2023-06-10

怎么在centos系统中对网络进行配置

今天就跟大家聊聊有关怎么在centos系统中对网络进行配置,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一,修改文件来设置网络连接1,自动获取IP的方法自动获取根4个文件有关系a),
2023-06-10

怎么在Flask中利用SQLAlchemy对SQLite进行配置

今天就跟大家聊聊有关怎么在Flask中利用SQLAlchemy对SQLite进行配置,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、使用 pip 安装 Flask-SQLAlche
2023-06-14

怎么在Nginx中对HTTPS nginx.config文件进行配置

今天就跟大家聊聊有关怎么在Nginx中对HTTPS nginx.config文件进行配置,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。目录位置:/usr/local/www/ngin
2023-06-08

怎么在struts2中利用注解对Action进行配置

怎么在struts2中利用注解对Action进行配置?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 使用注解来配置Action可以实现零配置,零配置将从基于纯X
2023-05-30

在SSM项目中怎么对LOG4J日志进行配置

在SSM项目中怎么对LOG4J日志进行配置?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在pom文件中添加依赖 .
2023-05-31

怎么在java中对Sorted进行排序

这篇文章给大家介绍怎么在java中对Sorted进行排序,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queue队列:有序,可重
2023-06-14

怎么在java中对SimpleDateFormat进行转换

怎么在java中对SimpleDateFormat进行转换?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开
2023-06-14

Java中怎么对线程通信进行调试

Java中怎么对线程通信进行调试,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。使当前Java线程通信(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释
2023-06-17

怎么在java中对方法参数进行核对

本篇文章为大家展示了怎么在java中对方法参数进行核对,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录