springboot源码(2)

在spingboot应用中,我们会经常配置自己的servlet,经常用的方法是在配置类中加入这样的一个bean:

 

 那么它通过这样注入servlet的一个原理是什么呢?我们打开ServletRegistrationBean这个类:

 

 它继承了DynamicRegistrationBean这个类,依次打开它们的继承,可以看到ServletRegistrationBean->DynamicRegistrationBean->RegistrationBean->ServletContextInitializer;

最后的这个ServletContextInitializer接口里面就只定义的onStartup方法,我们打开RegistrationBean里重写的这个方法:

 

 这里的getDescription返回你注册的组件是servlet、listener还是filter,可看到其实现类分别对应了这3种,其实里面就只是加了对应描述的字符串而已,最后用register,我们打开这个方法:

 

 这个register方法其实就是DynamicRegistrationBean这个类里的,这里就把我们的组件注册到我们的servletContext中:

 

 最后configure方法配置我们自己自定义好的servlet:

 

 这样,我们就让我们自己自定义的servlet成功注入并生效我们自己的配置了;

 

posted @ 2021-03-01 10:08  xiao兆  阅读(67)  评论(0编辑  收藏  举报