天天看點

Spring注解驅動開發實戰 | 第二十篇:servlet3.0-ServletContainerInitializer的使用下載下傳源碼

建立com.wsc.service 包,并建立HelloService,HelloServiceExt,HelloServiceImpl,AbstractHelloService

package com.atguigu.service;

public interface HelloService {

}
           
package com.atguigu.service;

public interface HelloServiceExt extends HelloService {

}
           
package com.atguigu.service;

public class HelloServiceImpl implements HelloService {

}
           
package com.atguigu.service;

public abstract class AbstractHelloService implements HelloService {

}
           

在servlet3.0項目中建立META-INF\services目錄,在該目錄下建立javax.servlet.ServletContainerInitializerz檔案,

指定啟動時加載的類,

com.wsc.servlet.MyServletContainerInitializer
           

在com.wsc.servlet  中建立MyServletContainerInitializer

package com.wsc.servlet;

import java.util.Set;
import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.HandlesTypes;

import com.wsc.service.HelloService;

//容器啟動的時候會将@HandlesTypes指定的這個類型下面的子類(實作類,子接口等)傳遞過來;
//傳入感興趣的類型;
@HandlesTypes(value={HelloService.class})
public class MyServletContainerInitializer implements ServletContainerInitializer {

	/**
	 * 應用啟動的時候,會運作onStartup方法;
	 * 
	 * Set<Class<?>> arg0:感興趣的類型的所有子類型;
	 * ServletContext arg1:代表目前Web應用的ServletContext;一個Web應用一個ServletContext;
	 * 
	 * 1)、使用ServletContext注冊Web元件(Servlet、Filter、Listener)
	 * 2)、使用編碼的方式,在項目啟動的時候給ServletContext裡面添加元件;
	 * 		必須在項目啟動的時候來添加;
	 * 		1)、ServletContainerInitializer得到的ServletContext;
	 * 		2)、ServletContextListener得到的ServletContext;
	 */
	@Override
	public void onStartup(Set<Class<?>> arg0, ServletContext sc) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("感興趣的類型:");
		for (Class<?> claz : arg0) {
			System.out.println(claz);
		}
		
	}

}
           

運作servlet3.0項目,可看到:

Spring注解驅動開發實戰 | 第二十篇:servlet3.0-ServletContainerInitializer的使用下載下傳源碼

----------------------------------------------------------

下載下傳源碼

繼續閱讀