首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Google Sitebricks 构建更好的 Web 应用程序(3)

使用 Google Sitebricks 构建更好的 Web 应用程序(3)

使用 Guice 配置 Sitebricks使用 Sitebricks 的一个优势就是它需要最少的配置。首先,您需要修改应用程序的 web.xml,如清单 5 所示。
清单 5. web.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Reviewr</display-name>
  <filter>
      <filter-name>webFilter</filter-name>
      <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
  </filter>

  <filter-mapping>
      <filter-name>webFilter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

  <listener>
      <listener-class>org.developerworks.reviewr.AppInjector</listener-class>
  </listener>
</web-app>




上述代码创建了一个 servlet 筛选器,它会拦截传入的 HTTP 请求。您不需要创建自己的筛选器,而要使用与 Guice 一同提供的 GuiceFilter。您要映射筛选器 /*(将所有请求发送到该筛选器)。
清单 5 还构建了一个 servlet 上下文侦听器。Web 应用程序启动时会调用该侦听器。这里的依据是要在应用程序启动时配置 Sitebricks。因此,要编写一个名为 AppInjector 的自定义类,如下面所示。
清单 6. 使用 AppInjector 配置 Sitebricks
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class AppInjector extends GuiceServletContextListener {

    @Override
    public Injector getInjector() {
        Module module = new SitebricksModule() {
            @Override
            protected void configureSitebricks() {
                scan(ShowRestaurants.class.getPackage());
                bind(RestaurantDao.class).to(RestaurantEmbeddedJdbcDao.class);
                bind(ReviewDao.class).to(ReviewEmbeddedJdbcDao.class);
                bind(String.class)
                        .annotatedWith(Names.named("connStr"))
                        .toInstance("jdbc:derby:reviewrDb;create=true");
                bind(DbManager.class).to(EmbeddedDbManager.class);
            }
        };
         
        Injector injector = Guice.createInjector(module);
        return injector;
    }
}




如果您熟悉 Guice,上述代码应该会看起来很眼熟。该代码创建了一个 Guice 模块。通常您在 Guice 中实现 configure 方法,但本例使用一个特定于 Sitebricks 的 Module 的子类且实现其 configureSitebricks 方法。这是进行所有典型 Guice 配置的地方:将接口绑定到其实现并配置应用程序属性。
示例使用 scan,这是 Sitebricks 所特有的一个 API。它接收一个 Java 包并将其内容添加到由 Sitebricks 管理的类中。稍后您将看到该类的使用方式。
目前为止,您已经完成了应用程序需要的所有配置。大多数配置实际上是特定于应用程序的,比如在 AppInjector 中进行的所有绑定调用。它们并非必需的,但是这样做可以通过 Guice 使业务逻辑的编写更容易。如果您想要的只是 Sitebricks,那么就只需要 web.xml 和 scan 调用。配置完成后,就可以编写应用程序逻辑了。
返回列表