手写模拟SpringBoot核心流程

依赖

建一个工程,两个Module:

  1. springboot模块,表示springboot框架的源码实现
  2. user包,表示用户业务系统,用来写业务代码来测试我们所模拟出来的SpringBoot

首先,SpringBoot是基于的Spring,所以我们要依赖Spring,然后我希望我们模拟出来的SpringBoot也支持Spring MVC的那一套功能,所以也要依赖Spring MVC,包括Tomcat等,所以在SpringBoot模块中要添加以下依赖:

<dependencies>
	<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.18</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.3.18</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.18</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>9.0.60</version>
        </dependency>
</dependencies>

 在User模块下我们进行正常的开发就行了,比如先添加SpringBoot依赖:

<dependencies>
	<dependency>
		<groupId>org.example</groupId>
		<artifactId>springboot</artifactId>
		<version>1.0-SNAPSHOT</version>
	</dependency>
</dependencies>

然后定义相关的Controller和Service:

 

因为我们模拟实现的是SpringBoot,而不是SpringMVC,所以我直接在user包下定义了UserController和UserService,最终我希望能运行MyApplication中的main方法,就直接启动了项目,并能在浏览器中正常的访问到UserController中的某个方法。 

核心注解和核心类

我们在真正使用SpringBoot时,核心会用到SpringBoot一个类和注解:

  1. @SpringBootApplication,这个注解是加在应用启动类上的,也就是main方法所在的类
  2. SpringApplication,这个类中有个run()方法,用来启动SpringBoot应用的

所以我们也来模拟实现他们。

我们自己实现一个@JiajiaSpringBootApplication

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Configuration
@ComponentScan
@Import(WebServiceAutoConfiguration.class)
public @interface JiajiaSpringBootApplication {
}

 实现启动逻辑的JiajiaSpringApplication类。

相关推荐

  1. SpringBoot(五)之整合AOP

    2024-03-22 09:06:03       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 09:06:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 09:06:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 09:06:03       82 阅读
  4. Python语言-面向对象

    2024-03-22 09:06:03       91 阅读

热门阅读

  1. 【Docker】常用命令 docker search

    2024-03-22 09:06:03       38 阅读
  2. 「Linux系列」说说Shell参数传递、参数处理方法

    2024-03-22 09:06:03       43 阅读
  3. DeepLearning in Pytorch|手写数字识别器_minst_convnet

    2024-03-22 09:06:03       33 阅读
  4. Pytorch: torch.mean()

    2024-03-22 09:06:03       39 阅读
  5. pytorch与大语言模型直接偏好优化DPO方法

    2024-03-22 09:06:03       45 阅读
  6. 【Python】Pycharm 的 python_stubs

    2024-03-22 09:06:03       38 阅读
  7. PYTorch训练和推理 指定GPU

    2024-03-22 09:06:03       38 阅读
  8. Visual Studio工程升级QT产生的问题及解决

    2024-03-22 09:06:03       44 阅读