1、Servlet容器启动会扫描应用里面每一个jar包里面META-INF/services/javax.servlet.ServletContainerInitializer指定的实现类,启动并运行这个是实现的方法,SpringMVC框架启动就是采用的此种方法。新建一个ServletContainerInitializer的实现类MyServletContainerInitializer。
2、创建一个文件夹META-INF/services/javax.servlet.ServletContainerInitializer,里面的内容是我们ServletContainerInitializer的实现类。这样就在应用启动的时候就会来运行这个启动类。
3、在ServletContainerInitializer实现类上可以使用@HandlesTypes注解,这个注解的作用会将这个注解指定的这个类型下面的子类(实现类,子接口)传递传递过来。
4、新建一个业务接口HelloService。并把这个接口作为@HandlesTypes的值。
5、ServletContainerInitializer启动方法onStartup参数Set<Class<?>>是配置在@HandlesTypes中类型的所有子类型,接下来打印这些类型。
6、接下来启动应用,查看程序的打印结果。