【问题标题】:@Inject of multiple DAO@Inject 多个 DAO
【发布时间】:2016-12-04 15:55:14
【问题描述】:

我会在同一个服务类中注入两个 DAO,我是这样做的:

@Transactional
public class TestData {

    private final UserDao userDao;
    private final ExerciseDao exerciseDao;

    @Inject
    public TestData(final UserDao userDao,final ExerciseDao exerciseDao) {
        this.userDao = userDao;
        this.exerciseDao = exerciseDao;
    }
}

方法对吗?

事实上,我尝试创建一个 TestData 类来初始化 HSQL 数据库的一些记录。

所以,我注入了这两个 DAO,然后我用它们来创建用户,这就是锻炼。

当我尝试通过 HTTP URL 调用 getExercices 或 getUsers REST 服务时,出现 500 状态错误:

<h2>HTTP ERROR 500</h2> <p>Problem accessing Reason: <pre> Request failed.</pre></p><hr /><i><small>Powered by Jetty://</small></i><br/>

【问题讨论】:

  • 副手,看起来应该可以正常工作。如果您收到错误消息,请包含该错误及其堆栈跟踪,以便我们帮助您找到问题。
  • @BalusC,你为什么要删除java标签?
  • @AndrewTobilko:因为这个问题与 Java SE 无关。使用带有main() 方法的普通Java 应用程序类无法证明该问题,也无法在JLS 的帮助下回答。这个问题只是关于春天。

标签: spring rest dao data-access-object


【解决方案1】:

你想知道是否可以通过 1 个注解注入 2 个字段?

是的,这是可能的。你已经这样做了。

这是个好习惯吗?

就我个人而言,我更喜欢现场/二传手注入。在这种情况下,我不依赖于构造函数,并且可以防止不必要的代码。构造函数注入使您的代码与容器无关。无论你是否使用 CDI 容器(例如 Spring),你都必须使用这个特定的构造函数来初始化一个实例。

【讨论】:

  • 因为它对我不起作用,我得到了错误 500 错误。你是如何通过现场注入做到的?
  • @Selma,详细描述你的错误,显示堆栈跟踪
猜你喜欢
  • 2012-06-10
  • 2014-04-07
  • 2013-07-22
  • 2010-11-18
  • 1970-01-01
  • 2013-03-14
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多