[英]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.