Jér*_*nge 10 dependency-injection maven java-7
我想在大型Java 7独立应用程序中使用依赖注入,但我不确定从哪里开始.
我写了一个小测试应用程序:
public class Main {
@Inject
MyInterface myInterface;
public static void main( String[] args ) {
Main m = new Main();
System.out.println(m.myInterface.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
有一个界面:
public interface MyInterface {
String getMessage();
}
Run Code Online (Sandbox Code Playgroud)
和接口实现:
@Singleton
public class MyInterfaceImpl implements MyInterface {
public String getMessage() {
return "Hello World!";
}
}
Run Code Online (Sandbox Code Playgroud)
将pom.xml
包含一个依赖:
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
这个应用程序编译,但当然,它NPE
在尝试打印消息时崩溃.注射没有发生.
所以,我的问题是:
Lau*_*ntG 12
使用Java的依赖注入不仅有一种方法.
(1)例如,您可以使用标准CDI,其中参考实现是Weld.有关于在Java SE环境中使用Weld的文档,可能是独立应用程序的含义.
您也可以使用Spring Framework,它也支持常见的CDI注释(例如@Inject
).在这种情况下,您通常会ClasspathXmlApplicationContext
在程序启动时创建一个,让Spring管理(创建/销毁)您需要的所有bean.
(2)您当前的依赖项仅导入Java EE的API.因此,如果你得到NullPointerException
执行,我并不感到惊讶.您需要添加实现(如Weld)或使用Spring.
(3)见上面的链接.
另请参阅Java EE 6 CDI实现之间的差异,以获取有关其他Java CDI可用实现的参考.
归档时间: |
|
查看次数: |
8062 次 |
最近记录: |