自定义SpringBootApplication、Java代码启动Tomcat

Spring Boot自定义Starter:从原理到实现(附完整代码) Spring Boot自定义Starter指南 Spring Boot Starter是预配置的依赖模块,简化项目配置。自定义Starter包含两个核心模块:自动配置模块(定义配置类)和启动器模块(管理依赖)。实现步骤包括: 创建Maven项目结构 编写自动配置类(使用@Configuration和条件注解) 配置spring.factories文件 发布到Maven仓库 自定义Starter通过自动配置机制,根据类路径依赖智能配置Bean,显著提升开发效率和代码复用性。测试时只需引入Starter依赖即可 阅读详情
1 自定义@DavidSpringBootApplication
package com.david.springboot;

import org.springframework.context.annotation.ComponentScan;

import java.lang.annotation.*;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@ComponentScan
public @interface DavidSpringBootApplication{

}

2、自定义SpringBootApplication

public class DavidSpringApplication {

    public static void run(Class clazz) {

        //1、创建一个容器
        AnnotationConfigWebApplicationContext applicationContext=new AnnotationConfigWebApplicationContext();
        applicationContext.register(clazz);
        applicationContext.refresh();


        String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();

        for (String beanName:beanDefinitionNames) {
            System.out.println("beanName------------------>"+beanName);
        }

        //2、启动Tomcat
        System.out.println("startTomcat");
        startTomcat(applicationContext,"localhost",8080);

//        startTomcat();
        System.out.println("startTomcat end");
    }


    public static void startTomcat(WebApplicationContext webApplicationContext,String hostname, Integer port) {

        Tomcat tomcat = new Tomcat();

        Server server = tomcat.getServer();
        Service service = server.findService("Tomcat");

        Connector connector = new Connector();
        connector.setPort(port);

        Engine engine = new StandardEngine();
        engine.setDefaultHost(hostname);

        Host host = new StandardHost();
        host.setName(hostname);

        String contextPath = "";
        Context context = new StandardContext();
        context.setPath(contextPath);
        context.addLifecycleListener(new Tomcat.FixContextListener());

        host.addChild(context);
        engine.addChild(host);

        service.setContainer(engine);
        service.addConnector(connector);

        // 接收到的所有请求最终都会转发到 DispatcherServlet 上面去处理
        tomcat.addServlet(contextPath, "dispatcher", new DispatcherServlet(webApplicationContext));
        context.addServletMappingDecoded("/*", "dispatcher");


        try {
            tomcat.start();
            tomcat.getServer().await();
        } catch (LifecycleException e) {
            e.printStackTrace();
        }


    }
}

使用moveit!控制真实机械臂(5)——编写真实机械臂节点中的action服务程序 上一篇文章中,我们简要介绍了ROS中action的基本知识,为了控制真实机械臂,我们已经修改了moveit配置文件,使得moveti启动后具备一个control_msgs::FollowJointTrajectoryAction类型的action客户端,接下来,我们完成该类型action的另一半,编写C++程序来实现action的服务端。由于底层机器人控制程序一般差别都很大,这里展示的只是编程要点... 阅读详情

相关推荐

Sonatype nexus3 数据迁移及升级3.71+(迁移到H2数据库)

nexus3旧版本OrientDB升级H2,及整体迁移nexus3数据到其它服务器。

葫芦娃 5557

AnnotationConfigApplicationContext初始化源码详解

Spring注解驱动容器启动流程解析 摘要:AnnotationConfigApplicationContext作为Spring基于注解的核心容器,其初始化过程严格遵循Java类加载机制和Spring分层设计。容器启动首先完成父类链初始化:AbstractApplicationContext初始化资源解析器,GenericApplicationContext创建DefaultListableBeanFactory实例。随后执行子类特有逻辑:创建AnnotatedBeanDefinitionReader处理注

weixin_51786043的博客 1825

6.4 实战项目:基于Agent内核构建Code Review智能体

本文介绍了一个基于Agent内核构建的智能Code Review系统实战项目。系统采用多Agent协作架构,包含代码质量分析、安全漏洞识别、性能优化建议等核心功能模块。文章详细展示了系统架构设计,采用协调器Agent管理多个专业Agent协同工作,并提供了基础Agent框架和协调器Agent的TypeScript实现代码。项目结合了AI Agent核心原理和多Agent协作机制,实现了自动化的代码审查流程,能够生成详细的审查报告,帮助开发者提升代码质量和安全性。

yonggeit的博客 3114

spring-源码-AnnotationConfigApplicationContext-创建分析-4

文章目录前言代码分析调用register()调用register()调用doRegisterBean()调用registerBeanDefinition()springboot调用流程项目启动调用run方法剩余流程学到了什么流程图 前言 用于注册我们的启动类,简单来说其实就是用于注册 带有@ComponentScan 注解的 目标类 代码分析 public AnnotationConfigApplicationContext(Class<?>... componentClasses) {

菜鸡在路上找食吃 458

matlab 点云学习目录【2026最新版】

matlab 点云学习目录。博客长期更新,本文最近更新时间为:2026年6月15日。

点云侠的博客 3万+

ABAP RAP 行为建模深入学习:从 Behavior Definition 到 Behavior Implementation 的完整实践指南

ABAP RAP开发指南:业务行为定义与实现 本文介绍SAP RAP框架中业务对象行为的开发方法: 分层设计 Behavior Definition声明业务能力(增删改查、校验、动作等) Behavior Implementation在ABAP类中编写具体逻辑 核心组件 使用BDL定义业务行为 通过FOR BEHAVIOR OF绑定行为池类(ABP) 在本地类实现校验/确定/动作逻辑 关键特性 支持managed/unmanaged两种实现模式 提供草稿表、并发控制等企业级功能 通过EML以别名访问实体 开

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 414

使用 AnnotationConfigApplicationContext 注册配置类

理解 @Configuration 和 @Bean 注释 在理想的场景中,您可以在表示应用程序上下文的 XML 中定义 bean。以下代码展示了创建课程用例中的上下文 XML 及 bean 定义: 清单 1. XML 与 bean 定义 <beans> <bean id="course" class="demo.Course"> <p...

luzhensmart的专栏 7853

R语言单因素被试内ANOVA检验

在R语言中,我们可以使用多种方法进行被试内ANOVA检验,其中包括使用内建函数或使用外部包。我们随机选择了10个被试,并对每个被试使用了三种不同的药物处理。通过上述代码示例,我们可以使用R语言进行单因素被试内ANOVA检验。假设我们的数据存储在一个名为"data"的数据框中,其中包含两个列:一个列是被试的编号,另一个列是生物指标的测量值。在上述代码中,我们创建了一个名为"data"的数据框,其中"Subject"列包含了被试的编号,"Measurement"列包含了生物指标的测量值。参数指定了数据来源。

PixelNovaO的博客 364

SpringBoot Closing org.springframework.context.annotation.AnnotationConfigApplicationContext 错误解决

2018-10-14 18:53:06.591 INFO 10080 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2018-10-14 18:53:07.563 INFO ...

qq_32868167的博客 1万+

YOLOv11改进策略【卷积层】| CVPR-2024 PKI Module 获取多尺度纹理特征,适应尺度变化大的目标

PKI Module是。

Limiiiing的博客 2714

详细介绍用MATLAB实现基于A*算法的路径规划(附完整的代码,代码逐行进行解释)(一)--------A*算法简介和环境的创建

   本系列文章主要介绍基于A*算法的路径规划的实现,并使用MATLAB进行仿真演示。    一、 A*算法简介       A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。      公式表示为: f(n)=g(n)+h(n),其中, f(n) 是从初始状态经由状态n到目标状态的代价估计,g(n) 是在状态空间中从初始状态到状态n的实际代价,h(n) 是从状态n到目标状态的最佳路径的估计代价。

慕羽★的博客 7万+

SpringBootApplication是如何启动Tomcat的? | 破解SpringBoot Tomcat启动之谜 !

我们都知道,SpringBoot内置了容器Tomcat,可以直接启动WebServletServer,那么SpringBoot是如何启动Tomcat的? 本文从Main方法入手,从SpringApplication.run跟到ServletWebServerApplicationContext 再到TomcatServletWebServerFactory,破解SpringBoot Tomcat启动之谜 !!!

★【World Of Moshow 郑锴】★ 2864

基于STM32的智能快递柜设计(全部资料)

本文设计了一种基于STM32F407ZGT6的智能快递柜系统,通过模块化硬件设计和软件算法优化,实现了24小时无人值守、温湿度智能调控、远程监控等功能。系统集成OLED显示、GSM通信、舵机控制、超声波检测等模块,存取响应时间≤3秒,识别准确率达99.2%,较传统模式效率提升60%。测试表明系统运行稳定,用户满意度达92%,具有成本低、安全性高、可扩展性强等特点,为智慧物流末端配送提供了创新解决方案。未来可引入AI算法、太阳能供电等功能进一步优化系统性能。

3254968421的博客 594

Java嵌入式tomcat整合SpringMVC

前言: 本文将介绍如何使用Java的方式启动tomcat,并整合Spring MVC,做到就像Springboot使用main方法启动,就可以访问controller资源的效果; 首先导入依赖: <properties> <embed.tomcat.version>9.0.21</embed.tomcat.version> </properties> <dependencies> <dep

qq_45794943的博客 1498

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SpringBoot的启动、处理请求整体流程(一)

maven传统的打包方式:将所有依赖的jar包都会拷贝出来,拷贝到顶层目录下面,这是因为Java规范(Java定义的系统类加载器AppClassLoader)是不能加载jar中带有jar(FatJar)的情况。maven拷贝出来的这种方式可能会出现多个依赖中出现名字重复的问题,无法解决。spring的解决方法【在pom文件中引入了插件】:

m0_50149847的博客 1125

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Tomcat在SpringBoot中是如何启动的

前言 我们知道SpringBoot给我们带来了一个全新的开发体验,我们可以直接把web程序达成jar包,直接启动,这就得益于SpringBoot内置了容器,可以直接启动,本文将以Tomcat为例,来看看SpringBoot是如何启动Tomcat的,同时也将展开学习下Tomcat的源码,了解Tomcat的设计。 从 Main 方法说起 用过SpringBoot的人都知道,首先要写一个main方...

KHOST的博客 536

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

基于源码看Tomcat 在 SpringBoot 中的启动

1基于源码看Tomcat 在 SpringBoot 中的启动 前言 我们知道 SpringBoot 给我们带来了一个全新的开发体验,我们可以直接把 web 程序达成 jar 包,直接启动,这就得益于 SpringBoot 内置了容器,可以直接启动,本文将以 Tomcat 为例,来看看 SpringBoot 是如何启动 Tomcat 的,同时也将展开学习下 Tomcat 的源码,了解 Tomc...

lidamiao 177

springboot项目在Tomcat(eclipse)下运行

一、遇到问题         新建springboot项目,用SpringBootApplication和Maven Build方式均可以正常启动访问。但移植到Tomcat后不能访问,报log4j2的jar包找不到。         开发环境:         JDK 1.7         apache-tomcat-7.0.88         springboot:v1.5.4.R...

blackeye 6252

Spring Boot @ SpringBootApplication,SpringApplication类

Spring Boot @SpringBootApplication注释 (Spring Boot @SpringBootApplication Annotation) Spring Boot @SpringBootApplication annotation is used to mark a configuration class that declares one or more @Bea...

从零开始的教程世界 352

项目部署—移除Spring Boot内置Tomcat,部署到云服务器Tomcat

SpringBoot默认给我们提供了内置tomcat,只需要运行Application就可以启动项目了。但要将SpringBoot项目打包成war包,部署到远程服务器的外置tomcat时,就需要移除掉SpringBoot的内置tomcat咯,否则就会访问不了我们的项目。

想好了就去做吧 即便失败了 至少这条路上留下了你的脚印 2287

SpringBootApplication无法启动:Unregistering JMX-exposed beans on shutdown

今天新建一个spring boot项目,启动的时候报错Unregistering JMX-exposed beans on shutdown,按照网上网友所解答的添加web依赖,添加tomcat依赖,或者将tomcat依赖的scope从provided修改为compile或者直接删除,操作如下: dependency>    groupId>org.springframework.boot

白日梦想家的博客 568

SpringBoot启动方式讲解和部署war项目到tomcat9

1、SpringBoot启动方式讲解和部署war项目到tomcat9简介:SpringBoot常见启动方式讲解和部署war项目Tomcat   1、ide启动   2、jar包方式启动     maven插件:      <build>       <plugins>         <plugin>      ...

qq_39354297的博客 193

说说springboot启动机制

说说springboot启动机制 ----- maven对依赖的管理,场景器,SpringBootApplication,EnableAutoConfiguration几个注解,加载了Tomcat,Mvc ... 说说springboot启动机制 https://ke.qq.com/webcourse/index.html#cid=333216&term_id=100395479&taid=2568313133929888&vid=5285890788262993749 .

快乐人生的博客 252

《Spring Boot极简教程》第3章 一键启动应用程序

第3章 一键启动应用程序 3.1 SpringBoot版的Restful Hello,World 3.1.1 Spring Boot CLI groovy版Hello World 首先安装Spring Boot CLI,参考文档:http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting

AI天才研究院 8787

Springoot配置外部Tomcat,启动时无法加载SpringbootApplication解决办法

使用命令行,在项目路径下输入mvn clean install package -Dmaven.test.skip=true即可解决

ITElitZhouDaHuan的博客 784

SpringBoot 应用启动流程:从启动到 Web 容器初始化

Spring 容器是何时初始化的?如果是 Web 应用(应用类型为 SERVLET 或 REACTIVE),上下文刷新完成后,会启动对应的 Web 容器(默认 Tomcat),并将 Web 应用部署到容器中,使其能够接收 HTTP 请求。:加载 Spring 内置的监听器(如监听启动事件、上下文刷新事件等),这些监听器会在启动流程的不同节点被触发,驱动后续操作(比如上一章讲的 ApplicationStartingEvent、ApplicationEnvironmentPreparedEvent 等)。

。。。 928
上一篇: 常见原注解:@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited
下一篇: 创建 git 仓库 or 已有仓库?
学博成
博客等级 码龄17年 915粉丝 175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值