ServletContainerInitializer 接口的作用
1、接口的作用
容器在启动应用的时候,会扫描当前应用每一个jar包里面
META-INF/services/javax.servlet.ServletContainerInitializer
指定的实现类,启动并运行这个实现类的onStartup方法;onStartup里面获取感兴趣的类型
2、代码事例
import com.kuang.service.HelloService;
import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.HandlesTypes;
import java.util.Set;
/**
* HandlesTypes 的作用,在容器启动的时候,注解里面放的类的子类,或者实现类都能获取到
*
*/
@HandlesTypes({HelloService.class})
public class MyServletInit implements ServletContainerInitializer {
/**
*
*
* 应用启动的时候会执行onStartup 这个方法
* @param set
* @param servletContext 这个上下文用来存储信息的
* @throws ServletException 一个web 对应一个servletContext
*/
public void onStartup(Set<Class<?>> set, ServletContext servletContext) throws ServletException {
System.out.println("感兴趣的类型:");
for (Class<?> cla: set) {
System.out.println(cla);
}
}
}
2.1 @HandlesTypes 这个注解的作用
@HandlesTypes的作用是把@HandlesTypes这个注解的value 的子类或者实现(不包括value本身)能在容器启动的时候在onStartup这个方法里获取到
3、javax.servlet.ServletContainerInitializer这个文件的位置