Spring Data + JPA具有多个数据源但只有一组存储库

我今天一直在研究这一组,我开始认为我想要做的事情可能是不可能的,所以我转向你,强大的Stackoverflow,寻求帮助。 我正在用Java构建RESTful服务平台,Spring Data 3.1.2 + JPA作为我的持久层(如此处所述 )。 我的数据模型对象都是作为扩展Spring JpaRepository接口的接口实现的。 我已经将所有内容连接起来并且使用单个数据源工作得很好,如本示例所示(请注意,显示的数据源是Derby,但这仅用于开发目的;在生产中,我们将使用Oracle): 问题是该应用程序需要连接到多个(Oracle)数据库。 每个传入请求中包含的凭据将包含一个字段,该字段告知应用程序要转到哪个数据库以满足该请求。 每个数据库的模式都是相同的,因此不需要为每个数据库提供单独的存储库接口。 经过相当数量的谷歌搜索,很明显这是一个常见的情况。 以机智: 使用Spring Data JPA的多个数据库 Spring + Hibernate + JPA +多个数据库 如何使用多个数据源设置spring数据jpa 这是一篇由(前?)Spring开发人员撰写的博客文章,它与手头的主题实际上并不相关,但有人在评论中提出了这个post,作者回复了一些信息: http://blog.springsource.org/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/#comment-198835 似乎正在出现的主题是解决此问题的方法是定义多个EntityManagerFactories,并将每个EntityManagerFactories连接到适当的存储库,如下所示: 但是,正如我所提到的,我希望在所有数据源中重用我的存储库,因此这种方法似乎不起作用。 我知道我的代码中没有任何方法可以从请求中获取相关的信息,并使用它来确定要使用的数据源(或EntityManagerFactory)。 我正在努力的部分是如何获取该数据源/ EntityManagerFactory的句柄并将其“注入”我的存储库对象。 有任何想法吗?

如何在Spring’HandlerMethodArgumentResolver’中多次读取请求体?

我正在尝试解决RequestMapping方法的某些参数,从请求体中提取值并validation它们并将它们注入到某些带注释的参数中。 @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception { // 1, get corresponding input parameter from NativeWebRequest // 2, validate // 3, type convertion and assemble value to return return null; } 最大的问题是我发现HttpServletRequest (从NativeWebRequest获取)无法读取输入流(某些参数在请求体中) NativeWebRequest 。 那么我怎样才能多次检索Inputstream / Reader或请求体呢?

C#DateTime.Ticks在Java中等效

C#中DateTime.Ticks的Java等价物是什么? DateTime dt = new DateTime(2010, 9, 14, 0, 0, 0); Console.WriteLine(“Ticks: {0}”, dt.Ticks); Java中上述代码的等价物是什么?

循环遍历Java类中的所有字段

我有一个Java类,它有很多Fields 。 我想循环遍历allhe字段并为null的那些做一些事情。 例如,如果我的class级是: public class ClassWithStuff { public int inty; public stringy; public Stuff; //many more fields } 在另一个位置,我会创建一个ClassWithStuff对象,我想通过该类中的所有字段。 有点像这样: for (int i = 0; i < ClassWithStuff.getFields().size(); i++) { //do stuff with each one } 有什么办法可以让我实现这个目标吗?

+ =和= +之间的差异

我错了+ = = = +一次到多次,我想我一直都忘了,因为我不知道这两者之间的区别,只有那一个给了我期望它的值,而另一个没有。 为什么是这样?

为什么人们应该更喜欢在IE中使用CSS而不是XPath?

我正在开发一个只与IE7和IE8兼容的应用程序。 我不知道为什么,但有些人建议在识别IE中的元素时使用CSS而不是XPath。 当我访问官方Selenium网站时。 我看了这条消息 WebDriver尽可能使用浏览器的本机XPathfunction。 在那些没有本机XPath支持的浏览器上,我们提供了自己的实现。 除非您了解各种xpath引擎中的差异,否则这可能会导致一些意外行为。 我想知道在哪里可以找到各种xpath引擎的差异,在哪种情况下我应该使用CSS,以及在哪些XPath中,如果我使用的是IE。 谢谢。

“静态合成”是什么意思?

我正在查看从Java字节码获得的一些反汇编代码。 我看到一些声明如下: .method static synthetic access$0()Lcom/package/Sample; 我无法弄清楚synthetic或access$0含义。 有人可以帮我理解这部分吗?

JSR-310 – 解析具有可变长度的秒分数

有没有办法如何创建JSR-310格式化程序,能够解析具有可变长度秒分数的以下日期/时间? 2015-05-07 13:20:22.276052 要么 2015-05-07 13:20:22.276 示例代码: DateTimeFormatter formatter = new java.time.format.DateTimeFormatterBuilder() .append( java.time.format.DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”) ) .appendOptional( java.time.format.DateTimeFormatter.ofPattern(“.SSSSSS”) ) .toFormatter(); formatter.parse(“2015-05-07 13:20:22.276052”, LocalDateTime::from);

如何在运行时更改Spring的@Scheduled fixedDelay

我需要以固定的间隔运行批处理作业,并且能够在运行时更改此批处理作业的时间。 为此,我遇到了Spring框架下提供的@Scheduled注释。 但我不确定如何在运行时更改fixedDelay的值。 我做了一些谷歌搜索但没有找到任何有用的东西。

子列表抛出的ConcurrentModificationException

我的代码非常简单: List list = new ArrayList(); String a = “a”; String b = “b”; String c = “c”; String d = “d”; list.add(a); list.add(b); list.add(c); List backedList = list.subList(0, 2); list.add(0, d); System.out.println(“2b: ” + backedList); 我通过list.add(0,d)得到ConcurrentModificationExceptionexception。 所以一般来说,这是因为sublist()。 我很困惑,因为在sublist()的情况下,文档说: 返回的列表由此列表支持,因此返回列表中的非结构更改将反映在此列表中, 反之亦然 。 你能解释一下捕获的位置吗?