Как сварной контейнер обслуживать для применения в среде Java?
Я новичок в сварке, и через несколько дней изучаю, но знаю только фундаментальную концепцию сварки.
Я собираюсь использовать сварочный контейнер в среде Java. И вот что самый простой способ иметь CDI и JPA в Java SE? мой сегмент кода ниже:
public class SayHello {
public SayHello(){}
public void sayHello(){
System.out.println("Hello");
}
}
import javax.inject.Inject;
import org.jboss.weld.environment.se.Weld;
import org.jboss.weld.environment.se.WeldContainer;
public class UseInject {
private SayHello obj;
public UseInject(){}
@Inject
public UseInject(SayHello obj){
this.obj = obj;
}
public void show(){
obj.sayHello();
}
public static void main(String[] args){
Weld weld = new Weld();
WeldContainer container = weld.initialize();
UseInject ui = container.instance().select(UseInject.class).get();
ui.show();
weld.shutdown();
}
}
и мое приложение основано на Maven. Вот сегмент зависимости jar в pom.xml
<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se-core</artifactId>
<version>3.0.0.Alpha17</version>
Мое намерение состоит в том, чтобы ввести объект SayHello в объект UseInject, поэтому конечным результатом этого приложения будет "Hello". Но все не так гладко, jvm сообщает об ошибке:
и через поиск по интернету, есть поговорка, что строить пустой beans.xml можно, и я следую, что это не может дать эффекта. Что касается основного метода, который я имитирую. Какой самый простой способ иметь CDI и JPA в Java SE? Я не знаю, что он делает, и как проще всего иметь CDI и JPA в Java SE? используйте аннотацию @Produces, я не знаю, стоит ли мне ее тоже использовать. И я намеревался использовать его для класса SayHello, но я не знаю, какую банку я должен импортировать, чтобы использовать его, поэтому я сдаюсь.
Теперь я хочу: 1. узнать, как работает сварочный сервис для применения se, другими словами, что делает основной метод?
2. Как я могу успешно запустить мое приложение, используя сварку?
3. когда мы должны использовать аннотацию @Produces
И я упомянул ряд актуальных вопросов, например, приварка и Java Se. Как запустить приварку в тесте JUnit и т. Д., Но обнаружил, что они все для меня старшие. спасибо за ваше внимание заранее.
1 ответ
- Как я могу успешно запустить мое приложение, используя сварку?
Сообщение об ошибке говорит вам, что вы должны создать файл с именем beans.xml
под каталогом META-INF
, Поэтому, чтобы решить проблему, просто сделайте следующее:
- Каталог по имени
META-INF
подsrc/main/resources
каталог - Создайте пустой файл с именем
beans.xml
подMETA-INF
так что ваш проект включен CDI.
- когда мы должны использовать аннотацию @Produces
Вы можете использовать эту аннотацию, если хотите использовать любые примитивные типы Java, такие как Integer, String, ... в качестве компонентов CDI, или любой тип / класс во внешней библиотеке, которая не содержит META-INF/beans.xml
файл в пути к классам.
Пример:
public class SayHello {
@Produces
private double pi = 3.14159;
// the rest of the code
}
и вы можете ввести значение PI
в другом месте в вашем коде как:
public class UseInject {
@Inject
private double pi; // 3.14159 will be injected here
// the rest of the code
public static void main(...) {
// ....
UseInject ui = container.instance().select(UseInject.class).get();
ui.show();
System.out.println(ui.pi);
// ...
}
Значение 3.14159 должно отображаться на консоли.