我在本地使用一个单一实例MongoDB,并在Spring Boot存储库中,使用以下注释对文档类进行注释:
@Indexed(name = "deleteAt", expireAfterSeconds = 0)
private LocalDateTime deleteAt;
Run Code Online (Sandbox Code Playgroud)
正如我从此处的文档中读取的那样,文档应在指定的位置自动删除DateTime。它通常可以正常工作,但是当我频繁轮询同一文档时,我看到删除操作有所延迟。大多数文档被立即删除,但是在指定的删除时间之后,有些文档仍保留在数据库中长达30秒。
这让我想知道MongoDB是否运行调度程序来清理此类文档,如果可以的话,它多久运行一次?
我是 Mockito 测试的新手,正在测试 GET 请求。
我已经模拟了这个调用,但现在我需要返回,HttpResponse<Cars[]>因为这些值稍后会在 for 循环中使用。
如何创建一个HttpResponse包含Car对象数组的虚拟对象。
类中使用Get请求的方法CarProvider是:
public HttpResponse<Cars[]> getCars(String carId, String carname) {
return Unirest.get(endpointUrl)
.header("Accept", MediaType.APPLICATION_JSON)
.queryString("carId",cardId)
.queryString("carname",carname)
.asObject(Cars[].class);
}
Run Code Online (Sandbox Code Playgroud)
这CarsUsers在以下方法的另一个类中使用:
public List<Cars> getCars(String carId, String carname) {
HttpResponse<Cars[]> response = carProvider.getCars(carId, carname);
for(Cars car: response.getBody){
//use car and do something
}
Run Code Online (Sandbox Code Playgroud)
我的测试方法如下:
public class TestClass {
@Mock
HttpResponse<Cars[]> httpresponse;
@Mock
CarsProvider carsProvider;
@Mock
CarsUser carsUser;
@Test
public void getCarsTest(){
Mockito.when(carsUser.getCars(Matchers.anyString(),
Matchers.anyString())).thenReturn(getDummyCarsList());
Mockito.when(carsProvider.getCars(Matchers.anyString(),
Matchers.anyString())).thenReturn(httpResponse);
} …Run Code Online (Sandbox Code Playgroud) 我使用 Eclipse 开发了一个 Java/web 项目有一段时间了,我们有一些以 .launch 结尾的脚本。要启动的文件以以下两行开头:
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <launchConfiguration
> type="org.eclipse.jdt.launching.localJavaApplication">
Run Code Online (Sandbox Code Playgroud)
现在我已经开始使用 IntelliJ 了吗?
有没有办法将 mongo 数据库转储到特定的文件夹名称?假设我有一个名为myDb的数据库
当我使用时:
mongodump --db myDb
Run Code Online (Sandbox Code Playgroud)
它生成一个转储文件夹,myDb其中包含一个文件夹
是否有可能得到类似的dump/mySpecifiedFolder东西mongodump?
at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81)
at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:5
1)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContai
ner.java:263)
at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContai
ner.java:255)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfigu
redMojo(DefaultMavenPluginManager.java:519)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default
BuildPluginManager.java:121)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje
ct(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThre
adedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(Lifecycl
eStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Nativ
e Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Native
MethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(De
legatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
cher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
a:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(La
uncher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:
356)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at org.codehaus.plexus.archiver.zip.AbstractZipArchiver.<clinit>(Abstrac …Run Code Online (Sandbox Code Playgroud) 我编写了一个类来根据传递的数据创建工作簿。我现在正在编写模拟测试来测试我的方法。我不允许使用 powermock。以下是代码片段。
public class TalkDetailsToExcel extends AbstractXlsView {
private static final ResourceBundle RESOURCE_BUNDLE = MessageResource.getResourceBundle();
/**
* Builds the {@link Workbook} containing {@link Talk} details and adds to the {@link Sheet}.
*
* @param model the {@link Map} containing the {@link List} of {@link Talk}.
* @param workbook the Excel {@link Workbook} to which {@link Talk} needs to be added.
* @param httpServletRequest the {@link HttpServletRequest}
* @param httpServletResponse the {@link HttpServletResponse}
* @throws Exception when adding talk details to …Run Code Online (Sandbox Code Playgroud) 我想获取所有模拟对象的列表。使用早期版本的Mockito,我可以这样做:
List<Object> createdMocks = new LinkedList<Object>();
MockingProgress progress = new ThreadSafeMockingProgress();
progress.setListener(new CollectCreatedMocks(createdMocks));
Run Code Online (Sandbox Code Playgroud)
这些侦听器已在最新的2.8版Mockito中删除,还有其他替代方法吗?
当我使用 MongoDB 2.xx 时,我曾经(BasicDBList) JSON.parse("[]")将字符串数据解析为 Document 数组。但是最新的 MongoDB 驱动程序说这已被弃用,BasicDbObject.parse("")唯一的转换为BasicDBObject.
这是我之前在 2.xx Java 驱动程序中使用的一些代码示例
BasicDbList skuList = (BasicDBList) JSON.parse(skus);
Run Code Online (Sandbox Code Playgroud)
所以当我升级到 3.6.1 时,编译器说这已被弃用。并建议使用BasicDbObject.parse()
但这只接受 JSON 对象结构化的字符串......
{ "fruit": "apple"}
Run Code Online (Sandbox Code Playgroud)
...不是 JSON 数组格式的字符串。
所以,如果我有一个像"[\"SKU000001\", \"SKU0000002\", \"SKU0000003\"]"我如何转换为的字符串
BasicDBList?
说properties运行JAR最佳的人在执行中使用的文件属于其中是否正确META-INF?这个概念是正好与标准的目录结构指定的Maven。
假设需要这种结构,如何properties从中加载文件META-INF?
thufir@doge:~/NetBeansProjects/json_parser$
thufir@doge:~/NetBeansProjects/json_parser$ java -jar build/libs/json_parser-all.jarAug 18, 2017 6:44:24 AM net.bounceme.doge.json.Main main
INFO: starting
Aug 18, 2017 6:44:24 AM net.bounceme.doge.json.Main run
INFO: actually
Aug 18, 2017 6:44:24 AM net.bounceme.doge.json.PropertiesReader tryGetProps
INFO: properties
Aug 18, 2017 6:44:24 AM net.bounceme.doge.json.PropertiesReader getProps
INFO: properties
Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:434)
at java.util.Properties.load0(Properties.java:353)
at java.util.Properties.load(Properties.java:341)
at net.bounceme.doge.json.PropertiesReader.getProps(PropertiesReader.java:26)
at net.bounceme.doge.json.PropertiesReader.tryGetProps(PropertiesReader.java:16)
at net.bounceme.doge.json.Main.run(Main.java:18)
at net.bounceme.doge.json.Main.main(Main.java:12)
thufir@doge:~/NetBeansProjects/json_parser$
thufir@doge:~/NetBeansProjects/json_parser$ jar tf build/libs/json_parser-all.jarMETA-INF/ …Run Code Online (Sandbox Code Playgroud) 我正在为 Logback 配置日志。
XML 配置如下所示:
<configuration>
<appender name="console" class="...">
<encoder>
<pattern>Message:%nText: %m</pattern>
</encoder>
</appender>
...
</configuration>
Run Code Online (Sandbox Code Playgroud)
这个想法是日志记录应该是多行的:
Message:
Text: [Message text here]
Run Code Online (Sandbox Code Playgroud)
但是当我运行应用程序时,出现异常:
ch.qos.logback.core.pattern.parser.Compiler@8dbdac1 中出现错误 - 没有为转换字 [nText] 注册转换类
因此,问题在于“%n”和“Text”字符串合并为一个字符串。
作为解决方法,我可以用空格将它们分开书写:
Message:%n Text: %m
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,空格出现在日志中的“文本”之前
Message:
Text:
Run Code Online (Sandbox Code Playgroud)
是否有一些解决方案(空字符串或类似的转义字符)?
谢谢。
java ×7
mockito ×3
mongodb ×3
junit ×2
maven ×2
apache-poi ×1
backup ×1
deprecated ×1
eclipse ×1
gradle ×1
heroku ×1
httpresponse ×1
jar ×1
java-9 ×1
jsonparser ×1
logback ×1
logging ×1
meta-inf ×1
mocking ×1
mongodump ×1
rest ×1
spring ×1
testing ×1
unit-testing ×1
xml ×1