2016-07-29 92 views
0

的我会喷射两种DAO在同一个服务类,我做了如下:@Inject多个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,然后我用它们来创建用户,它是Exercice。

,当我试图打电话getExercices或getUsers REST服务trougth HTTP URL以500个状态时出现的错误:

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

副手,这看起来应该工作得很好。如果您收到错误消息,请包含该错误及其堆栈跟踪,以便我们帮助您找到问题所在。 –

+0

@BalusC,你为什么删除java标签? – Andrew

+0

@AndrewTobilko:因为这个问题不是关于Java SE的。这个问题不能用'main()'方法使用普通的Java应用程序类来证明,也不能在JLS的帮助下支持。这个问题只是关于Spring。 – BalusC

回答

1

你想听听是否有可能通过1个注释注入2场?

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

这是一个很好的做法吗?

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

+0

因为,它没有与我一起工作,我得到了错误500错误。 你是如何做到这一点与现场注射? – Selma

+0

@Selma,详细描述你的错误,显示堆栈跟踪 – Andrew

+0

你可以看看我的问题,我更新它。 – Selma