手撸一个简易版SpringBoot

手撸一个简易版SpringBoot

前言

提示 :本次作者使用的环境是Windows10+jdk1.8+maven3.6.1 + idea2020.03
注:本版本只是一个简易版本的Springboot,更多功能可以自己自己去扩充,新手上路,老鸟勿喷,欢迎所有热爱java的朋友加作者wx:W979578444一起探讨


一、导入maven相关依赖(pom.xml)

代码如下(示例):

	<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <spring.version>5.0.2.RELEASE</spring.version>
    </properties>
    <dependencies>
        <!-- spring上下文-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
        <!--文件上传依赖的两个jar包-->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
        <!--jackson-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.0</version>
        </dependency>
        <!--tomcat-->
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-catalina</artifactId>
            <version>9.0.30</version>
        </dependency>
    </dependencies>

二、新建自定义注解

代码如下(示例):

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

三、配置Tomcat相关

代码如下(示例):

3.1 配置文件application.properties

server.port=9090

3.2创建Tomcat启动所需的相关配置

public class XiaowangSpringApplication {
    private static Integer PORT;

    static {
    	//读取配置文件设置tomcat启动端口,其他相关配置可另行扩展service.port=9090
        InputStream is = XiaowangSpringApplication.class.getClassLoader().getResourceAsStream("application.properties");
        Properties props = new Properties();
        try {
            props.load(is);
            String port = props.getProperty("server.port");
            PORT = Integer.parseInt(port);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static ConfigurableApplicationContext run(Class config) {
        //创建web应用上下文对象
        AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
        applicationContext.register(config);
        applicationContext.refresh();
        startTomcat(applicationContext);
        return applicationContext;

    }

    private static Tomcat startTomcat(AnnotationConfigWebApplicationContext applicationContext) {
        //创建一个tomcat对象
        Tomcat tomcat = new Tomcat();
        Server server = tomcat.getServer();
        Service service = server.findService("Tomcat");
        Connector connector = new Connector();
        //加载配置文件,如果配置文件没有设置端口号默认8080
        if (null == PORT) {
            connector.setPort(8080);
        } else {
            connector.setPort(PORT);
        }
        Engine engine = new StandardEngine();
        //设置默认的主机localhost
        engine.setDefaultHost("localhost");
        Host host = new StandardHost();
        host.setName("localhost");
        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);
        //给tomcat添加一个dispatcher前端控制器,tomcat中的web.xml
        tomcat.addServlet(contextPath, "dispatcher", new DispatcherServlet(applicationContext));
        context.addServletMappingDecoded("/*", "dispatcher");
        try {
            tomcat.start();
        } catch (LifecycleException e) {
            e.printStackTrace();
        }
        return tomcat;
    }
    }

四、创建一个启动类入口

@XiaowangSpringBootApplication
public class XiaowangApplication{
    public static void main(String[] args) {
        XiaowangSpringApplication.run(XiaowangBoot.class);
    }
}

五、创建一个控制器入口Controller

@RestController
@RequestMapping("/xiaowang")
public class XIaowangController {

    @RequestMapping("/test")
    public String test() {
        return "xiaowangSpringboot";
    }
}

五、启动应用

在这里插入图片描述

六、测试接口

地址栏:http://localhost:9090/xiaowang/test
在这里插入图片描述
最后来一张包目录结构
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SpringBoot写简易流程可以通过以下几个步骤来实现: 1. 创建一个新的Java项目,并导入所需的依赖。这些依赖可以包括SpringBoot的核心模块、Web模块以及其他你需要的模块。 2. 创建一个主应用程序类,通常命名为`MyApplication`。这个类需要使用`@SpringBootApplication`注解标记,以指示它是SpringBoot应用程序的入口。 3. 在主应用程序类中,可以定义一些需要的配置和组件。例如,你可以使用`@Configuration`注解创建一个配置类,使用`@Bean`注解创建一些Bean实例。 4. 编写业务代码。在这个例子中,你可以创建一个`User`类来表示用户,并且定义一些操作用户的方法。 5. 启动应用程序。可以通过在主应用程序类中添加一个`main`方法,并在该方法中调用`SpringApplication.run(MyApplication.class, args)`来启动应用程序。 6. 测试应用程序。可以编写一些测试类,使用JUnit或其他测试框架来测试你编写的业务代码。 这样,你就可以一个简易的SpringBoot应用程序。通过编写配置、组件和业务代码,并启动应用程序来测试它。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [学习SpringBoot源码之一个简易版SpringBoot](https://blog.csdn.net/xjx666666/article/details/128205845)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小王979578444

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值