簡體   English   中英

使用beans.xml文件的CDI bean配置

[英]CDI bean configuration using beans.xml file

我有一個非常簡單的CDI bean:

package net.resourceAuth;

public class Sample {

   private String text;

   public String getText() {
    return text;
   }

   public void setText(String text) {
    this.text = text;
   }
}

現在,我想使用beans.xml初始化text變量。 我正在嘗試使用像這樣的beans.xml文件:

<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:res="urn:java:net.resourceAuth"
    xsi:schemaLocation="
    http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">

    <res:Sample>
      <res:text>test123</res:text>
    </res:Sample>

</beans>

但這行不通。 text始終為null。 您能幫我弄清楚這里出什么問題嗎?

換句話說:我正在尋找類似的解決方案,例如在此處描述的JSF faces-config.xml中使用的解決方案: http : //www.mkyong.com/jsf2/configure-managed-beans-in-jsf- 2-0 /

沒有針對此問題的內置解決方案。 您可以使用某些第三方解決方案,例如Apache DeltaSpike http://deltaspike.apache.org/,也可以使用CDI擴展名自己實現。

我真的不知道可以在beans.xml這種配置(這可能僅在Spring中有效,但也許有人會糾正我)。 初始化值的CDI方法是@PostConstruct注釋的方法,因此請嘗試此方法

public class Sample {

    private String text;

    @PostConstruct
    public void init() {
         this.text = "aaa";
    }
}

您是否嘗試過實現像這樣的@Observes ProcessInjectionTarget的javax.enterprise.inject.spi.Extension來包裝InjectionTarget

本示例從資源束中注入bean值。

如果看到.xml文件,則在發布的示例鏈接中,它使用包名,然后使用類名,因此,如果嘗試從<ress:Sample>更改為<ress:net.resourceAuth.Sample>它可能會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM