这可能是一个微不足道和无意义的问题但是,作为一个Spring新手,我总是问自己&#34; Spring如何在一个扩展他的课程的项目中使用课程?&#34; < / p>
例如AbstractAnnotationConfigDispatcherServletInitializer
:
public class Initializer extends AbstractAnnotationConfigDispatcherServletInitializer
{
@Override
protected Class<?>[] getRootConfigClasses() {
}
}
我的Initializer
类在手工构建的包中声明了非特殊名称,所以我想知道:Spring如何找到并实例化我的Initializer
类?它是否进行任何类型的包扫描&#34;我的项目试图获得扩展自己的所有类,或什么?
答案 0 :(得分:0)
servlet容器在部署时扫描webapp的类。这使得它可以自动注册用@WebServlet注释的类作为servlet,注释为@WebFilter的类作为servlet过滤器等。
它还允许if找到实现javax.servlet.ServletContainerInitializer的类,并调用它们的onStartup()方法,该方法允许初始化程序动态注册servlet和过滤器。 Spring类SpringServletContainerInitializer就是这样一个类,它又委托给你自己的初始化器。