我正在使用angular2 in-memory-web-api进行开发.对于生产环境,我想禁用in-memory-web-api和我要使用的真实API.有没有办法禁用InMemoryWebApiModule生产?
我想在Spring Boot项目中使用Cassandra 3.x. 我发现Spring Data Cassandra项目的当前发布版本仅支持Cassandra 2.x. 所以我想使用DataStax驱动程序而不是Spring Data Cassandra项目.我补充道
compile 'com.datastax.cassandra:cassandra-driver-core:3.1.1'
Run Code Online (Sandbox Code Playgroud)
作为依赖.现在我可以将值插入到Cassandra集群的键空间中.但是当运行REST控制器的测试时,我得到一个错误
java.lang.NoClassDefFoundError: io/netty/handler/codec/http/FullHttpRequest
Run Code Online (Sandbox Code Playgroud)
所以我补充道
compile 'io.netty:netty-all:4.1.6.Final'
Run Code Online (Sandbox Code Playgroud)
作为依赖,错误消失了.但现在所有测试都使用
TestRestTemplate.postForObject(...)
Run Code Online (Sandbox Code Playgroud)
要么
TestRestTemplate.put(...)
Run Code Online (Sandbox Code Playgroud)
失败.但是使用
TestRestTemplate.getForObject(...)
Run Code Online (Sandbox Code Playgroud)
按预期工作.我假设在Spring Boot的依赖项和我作为依赖项添加的Netty版本中存在一些冲突.
我发现最新版本的DataStax Cassandra驱动程序在没有额外的Netty依赖性的情况下工作是2.1.5,其日期为2015年3月,并且不支持Cassandra 3.使用此驱动程序一切正常但我不想使用那个老司机.
更新:我删除了DataStax驱动程序依赖项,并尝试使用Spring Data Cassandra的1.5.0.M1版本,并在buildscript中覆盖Spring,Spring Data Cassandra和Cassandra驱动程序版本.
ext['spring.version'] = '5.0.0.M2'
ext['spring-data-releasetrain.version'] = 'Ingalls-M1'
ext['cassandra-driver.version'] = '3.1.1'
Run Code Online (Sandbox Code Playgroud)
这导致以下错误:
java.lang.NoClassDefFoundError: io/netty/util/Timer
Run Code Online (Sandbox Code Playgroud)
使用Cassandra功能时.当我再次包含Netty时,Cassandra功能正常,但我的测试使用TestRestTemplate.put并且.post不再运行.我再次尝试升级到Spring Boot Version 2.0.0.BUILD-SNAPSHOT,其中还包括Spring Data Cassandra 1.5.0.M1.现在,当我启动应用程序并使用DataStax驱动程序功能时,我得到了与之前相同的NoClassDefFoundError.将Netty添加为依赖项会再次导致基于TestRestTemplate的单元测试...
更新:TestRestTemplate无法正常工作,因为Spring Boot将它配置为Netty4ClientHttpRequestFactory在类路径上找到Netty时使用,但Netty4ClientHttpRequestFactory似乎不起作用.
请参阅https://github.com/spring-projects/spring-boot/issues/7240 和https://jira.spring.io/browse/SPR-14860
有关修复,请参阅我对此问题的回答.
我在Polymer 1.0.2中遇到了铁-ajax和数据绑定的问题.Polymer文档中的一个稍微改变的例子都没有起作用.
以下是我的更改代码:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.js"></script>
<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../../bower_components/iron-ajax/iron-ajax.html">
</head>
<body>
<template is="dom-bind">
<iron-ajax
auto
url="http://jsonplaceholder.typicode.com/posts/"
lastResponse="{{data}}"
handleAs="json">
</iron-ajax>
<template is="dom-repeat" items="{{data}}">
<div><span>{{item.id}}</span></div>
</template>
</template>
<script>
(function (document) {
'use strict';
var app = document.querySelector('#app');
window.addEventListener('WebComponentsReady', function() {
var ironAjax = document.querySelector('iron-ajax');
ironAjax.addEventListener('response', function() {
console.log(ironAjax.lastResponse[0].id);
});
ironAjax.generateRequest();
});
})(document);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我改变的只是输入一个URL以获得真正的JSON响应并设置auto和handleAs属性.我还添加了一个带有侦听器的小脚本,用于响应事件.侦听器工作正常并处理响应,但dom-repeat模板中的跨距不会呈现.
我正在使用Polymer 1.0.2和铁元素1.0.0