我在考虑处理查询/请求参数的两个选项:
@GET
public String blah(@QueryParam("testParam") String testParam) {
}
Run Code Online (Sandbox Code Playgroud)
@GET
public String blah(@BeanParam RequestParamBean bean) {
}
Run Code Online (Sandbox Code Playgroud)
第二个选项看起来更具吸引力,因为它允许输入查询参数的验证逻辑被移动和解耦,blah其核心职责应该是处理并将验证委托给验证器进行高度解耦(以及SOLID原则,正确) ?).
但是,我看到的大多数示例(事实上,我正在处理的现有项目)只使用第一个选项.我想知道为什么没有广泛使用第二种选择是否有任何理由?有任何陷阱吗?这是反模式吗?这是否违反任何最佳做法?
在我的项目中,有许多标有 @SpringBootTest 的测试,我不将其视为单元测试,而是将其视为集成测试。所以我想在执行时仅运行单元测试:
mvn 干净安装
实际上我想运行这个命令作为预提交 git hook 的一部分,但是 @SpringBootTest 使得完成执行的时间更长。
有没有办法排除标有@SpringBootTest的测试?可能有一种模式我们可以传递给 Maven 来排除/某些测试。或者可以编写一个包含 Spring Boot 测试的测试套件。
我通过谷歌搜索来实现上述目标,但运气不佳。
还有更好的方法吗?
@Update:约束是maven pom文件不能修改。
@Update2:我有一个看起来很有希望的解决方案:
1. Use @Category("IntegrationTests") for @SpringBootTests tests.
2. Create TestSuite with excludeCategory:
@RunWith(CategoryRunner.class)
@ExcludeCategory("IntegrationTests")
public class TestSuite {
}
3. From mvn command line, run only TestSuite.
Run Code Online (Sandbox Code Playgroud)
我不确定这是最好的。欣赏任何人更好的方法。
我有代码:
int[] values = { 1, 4, 9, 16 };
Stream<Integer> ints = Stream.of(values);
Run Code Online (Sandbox Code Playgroud)
这给了我编译错误.但:
int[] values = { 1, 4, 9, 16 };
Stream<Integer> ints = Stream.of(new Integer[] {1, 4, 9, 16});
Run Code Online (Sandbox Code Playgroud)
不这样做.为什么?
我想在调试日志中写一些日志,这些日志在具有信息日志级别的生产日志中将不可用。那么,这些额外的调试日志将如何影响性能?我的意思是,如果我们将日志级别设置为INFO,则记录器必须检查日志级别是什么,并发现log.debug需要忽略。
那么这种额外的日志级别检查是否会影响性能?
部署时是否有任何自动删除log.debug()语句的方法?我的意思是在开发期间,log.debug将在那里,我们可以进行调试。但是在生产部署期间,自动魔术机制将删除所有log.debug()消息。我不确定这些是否可行。
我一直想知道为什么我需要一个Properties类,因为我总是可以创建一个HashMap并将键/值对保留在那里。可能是因为它减少了写入装载/存储属性文件的代码量。因为否则,我们必须创建BufferedReader并读取文件,然后拆分String和所有这些。但是,如果我们要从文件以外的来源获取键/值对,那么无论我们使用Properties类还是HashMap类,都可能没有任何区别。我只需要确认我的思维过程是否正确即可。
谢谢
我有一个 cron 属性文件,其中一些属性包含如下表达式:
"* 0/5 * * * ?"
Run Code Online (Sandbox Code Playgroud)
其中一些包含:
"* */5 * * * ?"
Run Code Online (Sandbox Code Playgroud)
两者有什么区别?
如果我想每 5 分钟运行一次,那么应该使用哪一个?
谢谢
PS:我的项目正在使用 spring 调度程序。
我有一个带有方法的类:
class URAction {
public List<URules> getUrules(Cond cond, Cat cat) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想创建它的模拟:
@Mock
URAction uraMock;
@Test
public void testSth() {
Cond cond1;
Cat cat1;
List<URule> uRules;
// pseudo code
// when uraMock's getUrules is called with cond1 and cat1
// then return uRules
}
Run Code Online (Sandbox Code Playgroud)
问题是我可以让模拟返回 uRules 只有一个参数:
when(uraMock.getUrules(argThat(
new ArgumentMatcher<Cond> () {
@Override
public boolean matches(Object argument) {
Cond cond = ((Cond) argument);
if (cond.getConditionKey().equals(cond1.getConditionKey())
return true;
return false;
}
}
))).thenReturn(uRules);
Run Code Online (Sandbox Code Playgroud)
不确定如何在上面的 when 调用中传递第二个参数,即 Cat。
任何帮助将不胜感激。 …
我有 pom.xml 的片段,它试图解决 fitbit 依赖性:
<repositories>
<repository>
<name>FitBit GitHub Repo</name>
<id>fitbit4j</id>
<url>https://nexus.vanntett.net/content/repositories/fitbit/</url>
</repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Failed to collect dependencies at com.fitbit:fitbit4j:jar:1.0.26: Failed to read artifact descriptor for com.fitbit:fitbit4j:jar:1.0.26: Could not transfer artifact com.fitbit:fitbit4j:pom:1.0.26 from/to fitbit4j (https://nexus.vanntett.net/content/repositories/fitbit/): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
我在 eclipse 中使用了这些参数: -Dmaven.wagon.http.ssl.insecure=true - Dmaven.wagon.http.ssl.allowall=true
这不起作用。
请帮忙。
谢谢
我有glassfish服务器,我正在尝试从netbeans运行服务器.我收到以下错误:
WARNING: Cannot start JMX connector JmxConnector config: { name = system, Protocol = rmi_jrmp, Address = 0.0.0.0, Port = 8686, AcceptAll = false, AuthRealmName = admin-realm, SecurityEnabled = false} due to exception java.io.IOException: Cannot bind to URL [rmi://MAZUMDAM4.americas.hpqcorp.net:8686/jmxrmi]: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: MAZUMDAM4.americas.hpqcorp.net; nested exception is:
java.net.ConnectException: Connection timed out: connect]
SEVERE: java.io.IOException: Cannot bind to URL [rmi://MAZUMDAM4.americas.hpqcorp.net:8686/jmxrmi]: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: MAZUMDAM4.americas.hpqcorp.net; nested exception is:
java.net.ConnectException: Connection timed …Run Code Online (Sandbox Code Playgroud) 我在SUT中有这段代码:
public void sutMethod() {
if (model == null) {
dao.save(model);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道模型不会为null,因为模型已经存在.所以我希望dao.save()不应该用模型调用它.因此,我需要一些方法,Mockito.verify不使用此参数调用该方法.现在我知道如何做相反的事情:如何确保/验证dao.save(),或任何方法本身,借助于参数调用ArgumentCaptor,但不确定当前场景.请帮忙.
谢谢
以下代码的运行在不同时间输出6,7,8.我不知道为什么.每个线程都有count变量,它是私有的.然后他们如何共享相同的变量?
public class ThreadSafety {
public static void main(String[] args) throws InterruptedException {
ProcessingThread pt = new ProcessingThread();
Thread t1 = new Thread(pt, "t1");
t1.start();
Thread t2 = new Thread(pt, "t2");
t2.start();
//wait for threads to finish processing
t1.join();
t2.join();
System.out.println("Processing count="+pt.getCount());
}
}
class ProcessingThread implements Runnable{
private int count = 0;
@Override
public void run() {
for(int i=1; i< 5; i++){
processSomething(i);
count++;
}
}
public int getCount() {
return this.count;
}
private void processSomething(int i) {
// …Run Code Online (Sandbox Code Playgroud) 从Kathie Sierra的OCA/OCP Java SE 7程序员I和II学习指南中找到的书:
int x = 2;
int y = 5;
if ((x > 3) && (y < 2) | doStuff()) {
System.out.println("true");
}
Run Code Online (Sandbox Code Playgroud)
这现在打印......什么都没有!因为前面的代码(少了一组括号)评估就像你说的那样,"如果(x> 3)不是真,并且(y <2)或者doStuff()的结果为真,那么打印true那么,如果(x> 3)不成立,那么在查看表达式的其余部分时没有意义"由于短路&&,表达式被评估为好像周围有括号(y <2)| 做东西().
在我的理解中,运营商&&和||具有相同的优先级,并从左至右评估.因此,在这种情况下,(x > 3) && (y < 2)仍应首先评估表达式.请解释.
更新:我的错误.这确实是一个"|" 而不是"||".
我在本教程的帮助下开发了一个 Spring Boot 应用程序:
https://stormpath.com/blog/tutorial-crud-spring-boot-20-分钟
POM 文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>gs-spring-boot</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
当我使用命令运行项目时: mvn spring-boot:run
我收到以下异常:
Caused by: java.lang.NoClassDefFoundError: org/dom4j/io/STAXEventReader
at org.hibernate.boot.spi.XmlMappingBinderAccess.<init>(XmlMappingBinderAccess.java:43)
at org.hibernate.boot.MetadataSources.<init>(MetadataSources.java:87)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:179)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:149)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:54)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:373)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:362)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1648) …Run Code Online (Sandbox Code Playgroud)