Tapestry5的系统初始化是由Module实现的,与servlet不同
传统的web应用,要配置系统启动时初始化任务,一般是在web.xml中配置相应的servlet,由系统启动时加载
Tapestry5在系统启动时,加载Module类来实现初始化,Module类名必须与web.xml文件中配置的应用名相同,如web.xml配置:
xml 代码
- PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd">
- <web-app>
- <display-name>lichen forum Applicationdisplay-name>
- <context-param>
- <param-name>tapestry.app-packageparam-name>
- <param-value>org.exampleparam-value>
- context-param>
- <filter>
- <filter-name>happyfilter-name>
- <filter-class>org.apache.tapestry.TapestryFilterfilter-class>
- filter>
- <filter-mapping>
- <filter-name>happyfilter-name>
- <url-pattern>/*url-pattern>
- filter-mapping>
- web-app>
其中红色的happy即为应用名,
Module类名必须写成HappyModule,并且需要放在services包下,如:
org.example.services
Happy
Module类在系统启动时加载,并且实例化,Tapestry5通过IoC来实现注册服务,每个服务由一个接口与实现类,如有Uservice接口,UserviceImpl实现类
在Happy
Module中注册如下:
java 代码
- public static void bind(ServiceBinder binder) {
- binder.bind(UserService.class, UserServiceImpl.class);
- }
当有多个服务时,可在bind方法中增加类似以上一行代码即可,当然Tapestry5还有其他注册服务的方法,在此不做描述
需要使用Tapestry5中注册的服务时有几点需要注意:
1、服务必须注入,使用@Inject
2、修饰符必须为private
3、get方法修饰符必须为protected
如:
java 代码
- @Inject
- private UserService _userService;
- protected UserService getUserService() {
- return _userService;
- }