【问题标题】:How to inject an external-defined class in Java EE如何在 Java EE 中注入外部定义的类
【发布时间】:2014-05-27 15:03:25
【问题描述】:
假设我想使用由 JavaSE 编写的外部库定义的 Foo 类(并假设我无法编辑它)。
在Spring中,我可以这样声明这个类为bean:
@Bean
public Foo foo() {
return new Foo();
}
那么,就可以执行DI了:
@Autowired
private Foo foo;
有没有办法在 Java EE 中做同样的事情(如果可能,通过避免继承)?
【问题讨论】:
标签:
java
spring
jakarta-ee
dependency-injection
【解决方案1】:
在 CDI 中,您甚至不必对 pojo 进行注释。
考虑在外部库中声明了以下内容:
public class MyService{}
然后在您的项目中,您可以拥有一个无状态 ejb 或只是另一个 CDI bean。
@Stateless
public class MyController{
@Produces
public MyService getMyService(){
return new MyService();
}
}
现在从你的控制器中的其他地方
@SessionScoped
@Named
public class MySessionController implements Serializable{
//simple, just inject and the producer method will be called automatically
@Inject
private MyService service;
}
您需要从 url 检查 Producers 和 Stereotypes:
Producers and Stereotypes