java – 依赖注入EJB 3 – 太多的选择?

前端之家收集整理的这篇文章主要介绍了java – 依赖注入EJB 3 – 太多的选择?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在启动一个基于EJB 3.0的新项目.我有一个“春天”的背景(和爱它),所以对我来说松散耦合和可测性是一个很大的必要.这个帖子不应该是关于“ejb vs. spring”.如果您已经有了真正的项目经验,这将是完美的.

以下是一些演示问题的示例代码

客户端 – > ejb – >合作者1 – >合作者.. – >合作者n

<!-- language: java -->
@Stateless
public class SampleService {

    // or @Inject via CDI
    // or @Autowired via Spring
    @EJB // or just use a stateless session bean via EJB 3.0
    private Bank bank;

    // same for this component
    @EJB
    private Calculator calc;

    // both collaborators must be settable from outside,to make everything testable (and mockable)

    /**
     * sample "business service" called from client
     */
    public void debit(BigDecimal amount){
        calc.calculate(amount.subtract(new BigDecimal(100)));
        bank.debit(amount);
    }

}

// or via @Component (Spring),or CDI?
@Stateless // or Stateless Session bean with optional @Service/@Singleton annotation?
public class Calculator {
    public void calculate(BigDecimal subtract) {
        // calculate stuff....
    }
}

// or via @Component (Spring),or CDI?
@Stateless // or Stateless Session bean with optional @Service/@Singleton annotation?
public class Bank {
    public void debit(BigDecimal amount) {
        // ...
    }
}

我想知道在ejb 3.0中为所有协作者及其合作者实施依赖注入的最佳方式是什么?在这个意义上的协作者可以非常非常小的专业课.

到目前为止,我们已经讨论了以下选项,因为总是没有一个正确的结论:)

>只使用ejb标准与所有beeing无状态会话bean和所有后果(如池,资源处理等)
>使用无状态会话bean作为“业务组件”(入口点)和从那里

a)弹簧有线依赖(通过“jboss snowdrop”整合)

b)CDI有线依赖(通过WELD for ejb 3.0和jboss eap 5.1)

我不需要知道如何在单元测试中使用bean.我以后的答案是什么是最好的方法来连接运行的appserver内的所有依赖项(spring vs. guice vs. CDI vs. EJB).我只需要从外部EJB(“业务入口点”)向下知道图形.所以外面的一切(servlets,frontend等)不是这个问题的范围:)

请假定EJB 3.0和jboss eap 5.1为项目设置:)

期待您的答案,并希望有一些基于项目的知识.

解决方法

在Java中一般都有“太多的选择”,所以在这方面也是如此.我不会将EJB描述为通用的依赖注入框架,而是将其用于其目的.如果这是你想要的代码,你应该为此添加一个框架.如果你知道和喜欢春天,去吧.我使用Guice与EJB( here是一本不错的菜谱),效果也很好,如果你需要另一个框架来弄清楚如何做到这一点.

猜你在找的Java相关文章