【发布时间】:2017-02-02 07:05:53
【问题描述】:
我是一个焊缝新手,经过几天的摸索,我只知道焊缝的一些基本概念。
我打算在java se环境中使用weld container。并按照What is the easiest way to have CDI and JPA in 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。这是 pom.xml
中的 jar 依赖段
<dependency>
<groupId>org.jboss.weld.se</groupId>
<artifactId>weld-se-core</artifactId>
<version>3.0.0.Alpha17</version>
我的意图是将 SayHello 对象注入到 UseInject 对象中,所以这个应用程序的最终输出是“Hello”。 但是事情并不是那么顺利,jvm报如下错误:
通过网上搜索,有一种说法,构建一个空的beans.xml 是可以的,我按照它无法生效。至于main方法我模仿What is the easiest way to have CDI and JPA in Java SE?不知道是干什么的,What is the easiest way to have CDI and JPA in Java SE?用的是@Produces注释,我不知道我是否也应该使用它。我本来打算将它用于 SayHello 类,但我不知道应该导入哪个 jar 才能使用它,所以我放弃了。
现在我想: 1.知道weld service for se 应用程序是怎么做的,也就是说main 方法做了什么?
2.如何使用 Weld 成功运行我的应用程序?
3.当我们应该使用注解@Produces
我参考了一些相关问题,例如weld and java seHow to bootstrap weld-se in a JUnit testetc。但发现他们对我来说都是高级的。 感谢您的关注。
【问题讨论】:
标签: java maven cdi weld weld-se