手写SpringBoot

Working ability is greater than attitude.
talk is cheap, show me the code,make a better result.

目录

在这里插入图片描述

概述

作为SpringBoot 家族的一员,SpringBoot是非常重要的。

需求:

需求整理如下:
1.约定由于配置
2.整合jar,自动配置

设计思路

暂无

实现思路分析

1. tomcat

首先引入了Tomcat依赖,然后用java代码启动Tomcat容器,默认Tomcat版本是8.5版本

2.与Spring集成

Tomcat是实现了servlet3.0规范,在servlet加载类的过程中会寻找实现了ServletContainerInitializer接口的类,spring为我们实现了这个接口的类是SpringServletContainerInitializer,最后又会去调用实现了WebApplicationInitializer接口的类,最后真正是实现WebApplicationInitializer接口的是这个AbstractAnnotationConfigDispatcherServletInitializer,然后在该类中去初始化spring容器和springmvc容器和servlet拦截的url

拓展Demo实现

相关代码如下:

1.启动tomcat

public static void start() throws ServletException, LifecycleException {
        //创建Tomcat容器和设置端口
        Tomcat tomcatServer = new Tomcat();
        tomcatServer.setPort(9090);
        
        StandardContext ctx = (StandardContext) tomcatServer.addWebapp("/", new File("src/main").getAbsolutePath());
        ctx.setReloadable(false);
        WebResourceRoot resources = new StandardRoot(ctx);
        
        File additionWebInfClasses = new File("target/classes");
        //告诉Tomcat项目的class目录,根目录
        resources.addPreResources(
                new DirResourceSet(resources, "/WEB-INF/classes", additionWebInfClasses.getAbsolutePath(), "/"));
        //启动容器
        tomcatServer.start();
        tomcatServer.getServer().await();
        
    }
    

/**
 * @Description:SpringMVC注解配置,视图解析器  
 * 
 * @mail:hutao_2017@aliyun.com
 * @date 2020年8月11日
 */
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.hutao.springboot.write.controller" })
public class SpringMvcConfig extends WebMvcConfigurationSupport {
	@Bean
	public ViewResolver viewResolver() {
		InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
		viewResolver.setPrefix("/WEB-INF/page/");
		viewResolver.setSuffix(".jsp");
		viewResolver.setExposeContextBeansAsAttributes(true);
		return viewResolver;
	}
}

实验效果:

略

分析:

待补充

小结:

主要讲述了SpringBoot原理和简单实现,里面有许多不足,请大家指正~

参考资料和推荐阅读

  1. 手写简化版SpringBoot
  2. 大厂架构师带你两个小时纯手写spring boot(附PDF+视频).
  3. 纯手写SpringBoot框架.
  4. 手写SpringBoot框架.

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值