2013-10-03 4 views
1

У меня есть очень простой CDI боб:CDI конфигурации боб с использованием beans.xml файла

package net.resourceAuth; 

public class Sample { 

    private String text; 

    public String getText() { 
    return text; 
    } 

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

А теперь я хотел бы, чтобы инициализировать text переменную с помощью beans.xml. Я пытаюсь с 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 всегда равно нулю. Можете ли вы помочь мне выяснить, что здесь не так?

Другими словами: Ищу подобное решение, как он используется в JSF лица-config.xml описаны, например, здесь: http://www.mkyong.com/jsf2/configure-managed-beans-in-jsf-2-0/

ответ

2

Для решения этой проблемы не существует встроенного решения. Вы можете использовать некоторые сторонние решения, такие как Apache DeltaSpike http://deltaspike.apache.org/ или реализовать его самостоятельно, используя расширения CDI, например.

0

Я действительно не в курсе, что этот вид конфигурации может быть сделано в beans.xml (это, вероятно, работает только весной, но, возможно, кто-то меня исправит). CDI способ инициализации значений является метод с аннотацией @PostConstruct, поэтому попробуйте этот

public class Sample { 

    private String text; 

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

Я хотел бы настроить этот компонент (установить начальное значение для 'text') во внешний файл свойств. Таким образом, ваш ответ не соответствует моим требованиям. Может быть, вы знаете другой способ сделать такую ​​конфигурацию? – pWoz

+0

Я знаю, но, как я уже сказал, я сомневаюсь, что есть другой вариант, который «CDI». В любом случае, где вы получили синтаксис '' в 'beans.xml'? –

+0

Я нашел его здесь: http://docs.jboss.org/weld/xml/1.0.0/html/xmlconfiguration.html – pWoz

0

Вы попробуйте реализовать javax.enterprise.inject.spi.Extension, что @Observes ProcessInjectionTarget как этот Wrapping an InjectionTarget?

В этом примере введите значения компонентов bean из ресурсного пакета.

+0

У меня еще нет. Я думал, что есть встроенное решение для моей проблемы. Но, вероятно, мне придется реализовать это самостоятельно. – pWoz

0

В примере ссылки, которую вы опубликовали, если вы видите XML-файл, он использует имя пакета, а затем имя класса, поэтому, если вы попытаетесь изменить его с <ress:Sample> на <ress:net.resourceAuth.Sample>, это может сработать.

Смежные вопросы