小编Dan*_*iel的帖子

以编程方式设置MongoDb转换器

我正在尝试使用带有spring-data-mongodb的自定义转换器.我想以编程方式创建它,但我收到以下错误:

org.springframework.core.convert.ConverterNotFoundException: No converter found capable of     converting from type org.joda.time.LocalDate to type java.lang.String
at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:475)
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:175)
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:154)
....
....
Run Code Online (Sandbox Code Playgroud)

以下是失败的代码段:

    Mongo mongo = new Mongo();
    MongoDbFactory mongoDbFactory = new SimpleMongoDbFactory(mongo, "database");

    List<Converter> converters = new ArrayList<>();
    converters.add(new LocalDateWriteConverter());
    converters.add(new LocalDateReadConverter());
    CustomConversions customConversions = new CustomConversions(converters);

    MappingContext mappingContext = new SimpleMongoMappingContext();
    MappingMongoConverter mappingMongoConverter = new MappingMongoConverter(mongoDbFactory, mappingContext);
    mappingMongoConverter.setCustomConversions(customConversions);

    MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory, mappingMongoConverter);

    MongoDbEvent mongoEvent = new MongoDbEvent(new LocalDate(2012, 12, 8));
    mongoTemplate.insert(mongoEvent);
Run Code Online (Sandbox Code Playgroud)

这是我的转换器类:

class LocalDateReadConverter implements Converter<String, …
Run Code Online (Sandbox Code Playgroud)

java mongodb spring-data-mongodb

20
推荐指数
3
解决办法
3万
查看次数

在私有子网中运行时,AWS EKS上的DNS问题

我在VPC中设置了EKS群集.工作节点在私有子网中启动.我可以成功部署pod和服务.

但是,我无法从pod中执行DNS解析.(它在容器外部的工作节点上工作正常.)

使用https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/进行故障排除会导致nslookup出现以下情况(大约一分钟后超时):

服务器:172.20.0.10地址1:172.20.0.10

nslookup:无法解析'kubernetes.default'

当我在一个全公开的VPC中启动集群时,我没有这个问题.我是否缺少私有子网内DNS解析的必要步骤?

非常感谢,丹尼尔

amazon-vpc kubernetes amazon-eks

10
推荐指数
2
解决办法
6304
查看次数

导入到IntelliJ 14的Gradle中设置的自定义源

我试图让Gradle(2.1)和IntelliJ(14.0.2)发挥得很好.具体来说,我已经导入了一个示例Gradle项目,该项目包含用于集成测试的单独源集到IntelliJ中.

使用Gradle在命令行上构建项目,我能够成功运行集成测试.另一方面,当在IntelliJ内部运行时,我有两个问题:

1)由于集成测试中依赖于无法解析的第三方库(commons-collections),因此IntelliJ内部编译失败.

2)如果我删除上面的依赖项并编译,我无法在IntelliJ中运行集成测试.我收到以下错误消息:

没有找到给定的测试包括:[org.gradle.PersonIntegrationTest.canConstructAPersonWithAName]

文件结构如下所示:

src
  integration-test
    java
    resources
  main
    java
    resources
  test
    java
    resources
build.gradle
Run Code Online (Sandbox Code Playgroud)

和build.gradle:

apply plugin: 'java'

repositories {
    mavenCentral()
}

sourceSets {
    integrationTest {
        java.srcDir file('src/integration-test/java')
        resources.srcDir file('src/integration-test/resources')
    }
}

dependencies {
    testCompile 'junit:junit:4.11'
    integrationTestCompile 'commons-collections:commons-collections:3.2'
    integrationTestCompile sourceSets.main.output
    integrationTestCompile configurations.testCompile
    integrationTestCompile sourceSets.test.output
    integrationTestRuntime configurations.testRuntime
}

task integrationTest(type: Test, dependsOn: jar) {
    testClassesDir = sourceSets.integrationTest.output.classesDir
    classpath = sourceSets.integrationTest.runtimeClasspath
    systemProperties['jar.path'] = jar.archivePath
}

check.dependsOn integrationTest
Run Code Online (Sandbox Code Playgroud)

任何关于如何使这项工作的想法将非常感激.

Gradle分发中提供了完整的Gradle示例项目,位于samples/java/withIntegrationTests下

intellij-idea gradle intellij-14

7
推荐指数
1
解决办法
4916
查看次数

在Java中生成混合/多部分HTTP请求

我想POST(在Java中)一个multipart/mixed请求,其中一个部分是'application/json'类型,另一个是'application/pdf'类型.有谁知道一个图书馆,这将允许我轻松地这样做?令人惊讶的是我找不到一个.

我将生成JSON,但我需要能够将该部分的内容类型设置为'application/json'.

非常感谢,丹尼尔

java http

5
推荐指数
1
解决办法
4405
查看次数

使用PagedResourcesAssembler生成带有其他查询参数的链接

我在我的REST控制器中使用了spring-data-common的PagedResourcesAssembler,我很高兴看到它甚至在响应中生成了下一个/上一个链接.但是,在我有其他查询参数(除了页面,大小,排序)的情况下,这些参数不包含在生成的链接中.我能以某种方式配置汇编程序以包含链接中的参数吗?

非常感谢,丹尼尔

spring-hateoas spring-data-commons

5
推荐指数
1
解决办法
2799
查看次数

MongoTemplate.save上出现意外的OptimisticLockingException

使用MongoTemplate我试图存储一个名为Person的实体.由于我想使用乐观锁定,因此使用@Version注释对实体进行版本控制.

当我尝试使用MongoTemplate.save将新的Person实体存储到空集合中时,我得到了OptimisticLockingException.我没想到这一点,因为我正在创建一个新对象而不是更新现有对象.(没有其他线程正在访问该集合.)

这是预期的行为,还是我做错了什么?

(如果我使用MongoOperations.insert,一切正常.(我想使用save,因为CrudRepository只有保存,而不是更新.)如果我删除@Version注释,它也可以.)

谢谢,丹尼尔

我的实体类:

import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Version;
import org.springframework.data.mongodb.core.mapping.Document;

@Document
public class Person {

    @Version
    private long versionId;

    @Id
    private ObjectId id;

    private final String name;

    public Person(String name) {
        this.name = name;
    }

    public long getVersionId() {
        return versionId;
    }

    public ObjectId getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) …
Run Code Online (Sandbox Code Playgroud)

mongodb spring-data-mongodb

3
推荐指数
1
解决办法
2748
查看次数

在 Kotlin 中使用 spring-data-mongodb 时出现异常

我是 Kotlin 的新手,正在试验 spring-data-mongodb。请参阅下面的示例(此处也可作为具有内存中 MongoDb 的完全可运行的 Maven 项目获得:https : //github.com/danielsindahl/spring-boot-kotlin-example)。

应用程序.kt

package dsitest

import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication

@SpringBootApplication
open class Application

fun main(args: Array<String>) {
    SpringApplication.run(Application::class.java, *args)
}
Run Code Online (Sandbox Code Playgroud)

用户.kt

package dsitest

import org.springframework.data.annotation.Id
import org.springframework.data.annotation.PersistenceConstructor
import org.springframework.data.mongodb.core.mapping.Document

@Document(collection = "user")
data class User @PersistenceConstructor constructor(@Id val id: String? = null, val userName: String)
Run Code Online (Sandbox Code Playgroud)

用户库.kt

package dsitest

import org.springframework.data.repository.CrudRepository

interface UserRepository : CrudRepository<User, String>
Run Code Online (Sandbox Code Playgroud)

KotlinIntegrationTest.kt

package dsitest

import org.junit.Test
import org.junit.runner.RunWith
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.junit4.SpringRunner

@RunWith(SpringRunner::class)
@SpringBootTest …
Run Code Online (Sandbox Code Playgroud)

kotlin spring-data-mongodb

3
推荐指数
1
解决办法
2202
查看次数