正如承诺的那样,我们很高兴宣布Seam 3模块的另一个早期版本,Seam XML 3.0.0 Alpha 1。由 Seam XML模块,由 Stuart Douglas 贡献并领导,是一个CDI可移植扩展,允许您使用XML作为注释的替代方式来添加、修改和扩展CDI发现的bean。

但这不是任何XML。这是一个基于JSR-299(当时称为Web Beans)规范的早期修订版本的类型安全的XML格式。

尝试一下

假设您已经定义了以下内容ProducerBean

package org.jboss.seam.xml.test.injection;

public class ProducerBean {
   private String message = "Hello, annotation fans!";
}

和以下 限定符 注解

package org.jboss.seam.xml.test.injection;

@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface ProducerQualifer {}

您想通过CDI生产者公开message字段ProducerBean。您可以使用注解方法

package org.jboss.seam.xml.test.injection;

public class ProducerBean {
   @Produces
   @ProducerQualifier
   private String message = "Hello, annotation fans!";
}

但是,如果这个类不在您的控制之下,或者您更喜欢XML标签汤?您可以使用XML应用相同的bean元数据

<test:ProducerBean>
   <test:message>
      <s:Produces/>
      <test:ProducerQualifier/>
      <s:value>Hello, XML fans!</s:value>
   </test:message>
</test:ProducerBean>

这个片段可能需要一段时间才能让您的思维解析,但仔细观察XML标签是如何映射到ProducerBean类的注解版本。注意,我们还在XML中覆盖了message字段的值,将其设置为“你好,XML爱好者!”,而不是“你好,注解爱好者!”。在XML中分配字段值是一个非常有用的功能,它不能(容易地)仅用注解解决。

所有这些命名空间前缀是什么意思?命名空间前缀s是用于Seam XML架构的,test代表配置的bean类的Java包。以下是包括XML根和命名空间声明的完整配置文件。注意,还配置了另一个bean,ReceiverBean,这个通过元数据扩展来实现。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:s="urn:java:seam:core"
   xmlns:test="urn:java:org.jboss.seam.xml.test.injection">

   <test:ProducerBean>
      <s:override/>
      <test:message>
         <s:Produces/>
         <test:ProducerQualifier/>
         <s:value>Hello, XML fans!</s:value>
      </test:message>
   </test:ProducerBean>

   <test:RecieverBean>
      <s:extends/>
      <test:anotherField>
         <test:ProducerQualifier/>
         <s:Inject/>
      </test:anotherField>
   </test:RecieverBean>

</beans>

为了给您呈现一个完整的画面,这个例子连接了两个对象,一个具有生产者字段的bean,它会生产"大家好,XML爱好者!",另一个bean会注入产生的值。在ProducerBean覆盖现有bean的同时,RecieverBean扩展了现有bean,因此类上实际存在的注解将与XML文件中定义的注解合并。更多信息请参考附带在发行版中的文档和示例。

启动您的XML编辑器!

既然您已经看到了这个模块能提供的一些功能,现在是时候去获取它了。以下是您开始所需的链接。

与所有Seam 3模块的发布一样,Seam XML模块已发布到Maven 2中央仓库。以下是您需要在POM文件中添加的依赖声明,以便将此模块包含到您的项目中(注意版本号中的连字符)

<dependency>
   <groupId>org.jboss.seam.xml</groupId>
   <artifactId>seam-xml-core</artifactId>
   <version>3.0.0-Alpha1</version>
</dependency>

由于这是早期版本,无法保证语法已经确定。一切取决于您的反馈,我们非常希望收到您的反馈!

请加入我们!

我们希望所有JSR-299实现都能加入我们的努力,将XML配置纳入下一个版本的规范。您可以通过采用此XML模式,并帮助我们定义、完善和改进它来提供帮助。

感谢Stuart Douglas为这个模块的整合。XML配置为整个Seam 3项目奠定了关键基础!还要感谢Shane Bryzak为这次发布所做的准备工作。

敬请期待不久将来的其他Seam模块的alpha版本,例如Seam International(i18n),它将为Java EE 6应用程序提供增强的语言支持,以及Seam Faces,这是JSF 2的扩展和增强的精选集合。请记住,目前所有内容都在草稿阶段。加入我们


回到顶部