Spring SpringBoot小的细节总结记录 spring mvc 采用SPI技术,注入Spring的Servlet类,具体是实现了javax.servlet.ServletContainerInitializer接口的SpringServletContainerInitializer类,在这个类上注解@HandlesTypes传递的参数给Servlet中进行扩展使用 Srping boot Servlet3.0中@HandlesTypes会触发WebApplicationInitializer实现类, SpringBootServletInitializer; 实现的WebApplicationInitializer接口的...
bean初始化过程: 大体分为三个过程bean的对象创建、属性填充、初始化事件 bean的创建前事件,其中bean的创建前事件主要场景是在aop(AnnotationAwareAspectJAutoProxyCreator主要实现了InstantiationAwareBeanPostProcessor)通过对bean的创建前拦截, 将adviser方法加入到aop包下的的ProxyFactory产生一个代理类,并且会被cache。 并在后期(postProcessAfterInitialization)对目标类进行包装。最终加入到容器与对象的属性赋值。(这个阶段会属性填充混合进行) bean创建后置事件,用的比较少 属性填充:...
定义自定义注解 1@Retention(RetentionPolicy.RUNTIME) 2@Target(ElementType.PARAMETER) 3public @interface Logined { 4} 注解处理器 1@Component 2@Slf4j 3public class LoginedArgumentResolver implements HandlerMethodArgumentResolver { 4 @Override 5 public boolean supportsParameter(MethodParameter parameter) { 6 return...
Spring HandlerMapping 1package org.springframework.web.servlet; 2 3import javax.servlet.http.HttpServletRequest; 4 5import org.springframework.lang.Nullable; 6 7public interface HandlerMapping { 8 // 省略一下常量配置..... 9 /** 10 * 返回此请求的处理程序和任何拦截器。可以根据请求URL、会话状态或实现类选择的任何因素做出选择。 11 * 返回的HandlerExecutionChain包含一个处理程序对象,而不是标记接...
DispatcherServlet 关系说明 DispatcherServlet 继承了FrameworkServlet; FrameworkServlet 继承了HttpServletBean并实现了ApplicationContextAware(设置上下文); HttpServletBean继承了HttpServletu(抽象类),并实现了获取环境变量的设置和获取接口; HttpServlet实现了为Java EE Servlet的标准 启动流程 当容器启动时,容器(tomcat、jetty、undertow),启动后会依次加载HttpServlet的实现类 Spring MVC中DispatcherServlet为实现类,并作...