小编Dav*_*idR的帖子

在方法参数中使用NotNull Annotation

我刚开始在@NotNullJava 8中使用注释并获得一些意想不到的结果.

我有这样的方法:

public List<Found> findStuff(@NotNull List<Searching> searchingList) {
    ... code here ...
}
Run Code Online (Sandbox Code Playgroud)

我写了一个JUnit测试,传递参数searchList的null值.我期待发生某种类型的错误,但它经历过,好像注释不在那里.这是预期的行为吗?根据我的理解,这是为了让您跳过编写样板空检查代码.

@NotNull应该做什么的解释将非常感激.

java

113
推荐指数
5
解决办法
11万
查看次数

为Spring TestRestTemplate集成测试添加标头值

我正在使用TestRestTemplate我们产品的集成测试.

我有一个看起来像这样的测试:

@Test
public void testDeviceQuery() {
    ResponseEntity<Page> deviceInfoPage = template.getForEntity(base, Page.class);

    // validation code here
}
Run Code Online (Sandbox Code Playgroud)

此特定请求需要Header值.有人可以告诉我如何在TestRestTemplate电话中添加标题吗?

java spring integration-testing spring-boot

25
推荐指数
2
解决办法
1万
查看次数

spring-boot-starter-tomcat vs spring-boot-starter-web

我正在尝试学习Spring启动,我注意到有两种选择.

  1. spring-boot-starter-web - 根据文档提供对全栈Web开发的支持,包括Tomcat和web-mvc

  2. 弹簧引导起动的tomcat

由于#1支持Tomcat,为什么要使用#2?

有什么区别?

谢谢

spring tomcat spring-boot

21
推荐指数
2
解决办法
1万
查看次数

ZonedDateTime作为Spring REST RequestMapping中的PathVariable

我的Spring应用程序中有一个REST端点,如下所示

@RequestMapping(value="/customer/device/startDate/{startDate}/endDate/{endDate}", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
public Page<DeviceInfo> getDeviceListForCustomerBetweenDates(@PathVariable ZonedDateTime startDate, @PathVariable ZonedDateTime endDate, Pageable pageable) {
    ... code here ...
}
Run Code Online (Sandbox Code Playgroud)

我试过传递路径变量作为毫秒和秒.但是,我从两个方面得到以下异常:

"Failed to convert value of type 'java.lang.String' to required type 'java.time.ZonedDateTime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @org.springframework.web.bind.annotation.PathVariable java.time.ZonedDateTime for value '1446361200'; nested exception is java.time.format.DateTimeParseException: Text '1446361200' could not be parsed at index 10"
Run Code Online (Sandbox Code Playgroud)

有人可以解释我如何传入(如秒或毫秒)字符串,如1446361200,并让它转换为ZonedDateTime?

或者是作为String传递然后自己进行转换的唯一方法?如果是这样,有一种通用的方法来处理具有类似设计的多种方法吗?

java spring spring-mvc

11
推荐指数
2
解决办法
8415
查看次数

Spring REST - 验证原始GET请求参数

有没有办法使用注释验证原始(int,String等)GET参数?

@RequestMapping(value = "/api/{someInt}",
    method = RequestMethod.GET,
    produces = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<String> someRestApiMethod(
    @PathVariable
    @Valid @Min(0) @Digits(integer=10, fraction=0)
    int someInt) {

    //...

    return new ResponseEntity<String>("sample:"+someInt, HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)

如你所见,我已经放了一堆注释来验证someInt是一个10位数的正整数,但它仍接受各种整数.

java spring spring-validator spring-rest

6
推荐指数
1
解决办法
5035
查看次数

TOMCAT_HOME VS CATALINA_HOME

我最近一直在更新一些文档(我们从 Apache Tomcat 7 迁移到 8)并注意到对TOMCAT_HOME. 比如创建环境变量TOMCAT_HOME。如果我是对的,TOMCAT_HOME在第 3 版中几乎不推荐使用并替换为CATALINA_HOMECATALINA_BASE?但是,我找不到任何关于此或何时使用TOMCAT_HOMEover 的权威文章CATALINA_HOME。我当然不会同时设置!?对此有明确的答案吗?流行的第三方应用程序是否寻找TOMCAT_HOME而不是CATALINA_HOME

tomcat tomcat8

6
推荐指数
2
解决办法
8189
查看次数

Couchbase 4010错误

我一直在测试Couchbase 5并创建了一个名为fp-conversion-data其中包含一些JSON数据的存储桶.我一直在尝试运行一些简单的查询,例如:

SELECT * FROM fp-conversion-data limit 5;
Run Code Online (Sandbox Code Playgroud)

我没有得到预期的结果,而是一直收到这个错误:

[
  {
    "code": 4010,
    "msg": "FROM expression term must have a name or alias",
    "query_from_user": "SELECT * FROM fp-conversion-data limit 5;"
  }
]
Run Code Online (Sandbox Code Playgroud)

couchbase sql++

6
推荐指数
1
解决办法
1457
查看次数

升级到Spring 4.2后ContentNegotiatingViewResolver MediaTypes错误

我有一个dispatcher-servlet.xml文件,Bean如下所示:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver" p:defaultContentType="text/html">
    <property name="mediaTypes">
        <map>
            <entry key="html" value="text/html"/>
            <entry key="json" value="application/json"/>
        </map>
    </property>
    <property name="viewResolvers">
        <list>
            <bean id="localBasedViewResolver" class="com.company.web.i18n.LocaleBasedViewResolver"
                  p:viewClass="org.springframework.web.servlet.view.JstlView"
                  p:prefix="${views.prefix}"
                  p:suffix="${views.suffix}"
                  p:cacheUnresolved="false"
                  p:exposedContextBeanNames="webProperties"
                  p:order="1"
                  />
            <bean id="viewResolver"
                  class="org.springframework.web.servlet.view.InternalResourceViewResolver"
                  p:viewClass="org.springframework.web.servlet.view.JstlView"
                  p:prefix="${views.prefix}"
                  p:suffix="${views.suffix}"
                  p:cacheUnresolved="false"
                  p:exposedContextBeanNames="webProperties"
                  p:order="2"
                  />
        </list>
    </property>
    <property name="defaultViews">
        <list>
            <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
        </list>
    </property>
</bean>
Run Code Online (Sandbox Code Playgroud)

升级到Spring 4.2后,我收到以下错误:

Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'mediaTypes' of bean class [org.springframework.web.servlet.view.ContentNegotiatingViewResolver]: Bean property 'mediaTypes' is not writable or has an invalid setter method. Does the parameter type of the …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc

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

使用deleteBy和removeBy之间的JpaRepository区别

我一直在测试删除功能,JpaRepository并有这个(简化的)接口:

@Repository
public interface BrowserInfoDao extends JpaRepository<BrowserInfo, String> {

    @Transactional
    public Integer deleteByClientGuidAndBrowserGuid(String clientGuid, String browserGuid);

    @Transactional
    public Integer removeByClientGuidAndBrowserGuid(String clientGuid, String browserGuid);

}
Run Code Online (Sandbox Code Playgroud)

在我的测试中,我找不到removeBy和deleteBy方法之间的任何行为差异.所以我的问题是这些之间有什么区别?是否有最佳实践理由使用一个而不是另一个?

注意:我使用Hibernate作为实现.

spring jpa spring-data

4
推荐指数
1
解决办法
4618
查看次数

MySQL删除没有名称的外键

我正在尝试创建一个脚本,该脚本将从几个不同的MySQL数据库中删除没有设置名称的外键约束。我创建了以下脚本:

SET @CN := (SELECT CONSTRAINT_NAME
FROM
  information_schema.KEY_COLUMN_USAGE
WHERE
  table_name = 'inventory' and referenced_table_name='product_code' and referenced_column_name='shipping_code');

ALTER TABLE inventory DROP FOREIGN KEY @CN;
Run Code Online (Sandbox Code Playgroud)

正确获得约束名称。但是,它抱怨@CNALTER TABLE命令中的变量。为什么不起作用?

mysql

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

使变量类级别与最终本地级别相比的优点和缺点

我已经用Java编写了一段时间,我必须决定是否要创建一个变量类级别来制作一个最终的局部变量,所以我在我的代码中有它的范围.是否有标准或逻辑来做出这个决定?以某种方式做到这一点是否有任何利弊?

提前感谢您的任何答案.

java variables scope

2
推荐指数
1
解决办法
2148
查看次数

AspectJ围绕调用的特定返回类型

我正在寻找有关具有特定返回类型的方法的建议。我很好奇这样的事情是否可能。我有这种方法例如:

@Around("execution(* com.mytest.example.*Resource.*(..))")
public Object restCallMade(ProceedingJoinPoint pjp) {
    Response response = null;

    try {
        response = (Response) pjp.proceed();

        // Do other stuff
    } catch (Throwable e) {

    }

    return response;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果可能,我希望仅在方法的返回类型为Response时才调用此建议。那可能吗?

java aspectj spring-aop

2
推荐指数
1
解决办法
3462
查看次数

mybatis查询集合大小

我有一个 MyBatis 查询,如下所示:

<if test="userIdList != null and userIdList > 0">
            AND galleries.id IN (
                SELECT gallery_id
                    FROM gallery_users
                    WHERE gallery_id IN (
                        <foreach collection="userIdList" item="item" separator="," open="(" close=")">
                            #{item}
                        </foreach>
                    )
                    GROUP BY gallery_id HAVING COUNT(gallery_id) = ???                 
            )
        </if>
Run Code Online (Sandbox Code Playgroud)

我所坚持的部分是获取动态的集合大小。那么我怎样才能获得集合大小,以便我可以正确填写“???” 价值?

mybatis

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