我刚开始在@NotNullJava 8中使用注释并获得一些意想不到的结果.
我有这样的方法:
public List<Found> findStuff(@NotNull List<Searching> searchingList) {
... code here ...
}
Run Code Online (Sandbox Code Playgroud)
我写了一个JUnit测试,传递参数searchList的null值.我期待发生某种类型的错误,但它经历过,好像注释不在那里.这是预期的行为吗?根据我的理解,这是为了让您跳过编写样板空检查代码.
@NotNull应该做什么的解释将非常感激.
我正在使用TestRestTemplate我们产品的集成测试.
我有一个看起来像这样的测试:
@Test
public void testDeviceQuery() {
ResponseEntity<Page> deviceInfoPage = template.getForEntity(base, Page.class);
// validation code here
}
Run Code Online (Sandbox Code Playgroud)
此特定请求需要Header值.有人可以告诉我如何在TestRestTemplate电话中添加标题吗?
我正在尝试学习Spring启动,我注意到有两种选择.
spring-boot-starter-web - 根据文档提供对全栈Web开发的支持,包括Tomcat和web-mvc
弹簧引导起动的tomcat
由于#1支持Tomcat,为什么要使用#2?
有什么区别?
谢谢
我的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传递然后自己进行转换的唯一方法?如果是这样,有一种通用的方法来处理具有类似设计的多种方法吗?
有没有办法使用注释验证原始(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位数的正整数,但它仍接受各种整数.
我最近一直在更新一些文档(我们从 Apache Tomcat 7 迁移到 8)并注意到对TOMCAT_HOME. 比如创建环境变量TOMCAT_HOME。如果我是对的,TOMCAT_HOME在第 3 版中几乎不推荐使用并替换为CATALINA_HOME和CATALINA_BASE?但是,我找不到任何关于此或何时使用TOMCAT_HOMEover 的权威文章CATALINA_HOME。我当然不会同时设置!?对此有明确的答案吗?流行的第三方应用程序是否寻找TOMCAT_HOME而不是CATALINA_HOME?
我一直在测试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) 我有一个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) 我一直在测试删除功能,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作为实现.
我正在尝试创建一个脚本,该脚本将从几个不同的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命令中的变量。为什么不起作用?
我已经用Java编写了一段时间,我必须决定是否要创建一个变量类级别来制作一个最终的局部变量,所以我在我的代码中有它的范围.是否有标准或逻辑来做出这个决定?以某种方式做到这一点是否有任何利弊?
提前感谢您的任何答案.
我正在寻找有关具有特定返回类型的方法的建议。我很好奇这样的事情是否可能。我有这种方法例如:
@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时才调用此建议。那可能吗?
我有一个 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)
我所坚持的部分是获取动态的集合大小。那么我怎样才能获得集合大小,以便我可以正确填写“???” 价值?
java ×7
spring ×6
spring-boot ×2
spring-mvc ×2
tomcat ×2
aspectj ×1
couchbase ×1
jpa ×1
mybatis ×1
mysql ×1
scope ×1
spring-aop ×1
spring-data ×1
spring-rest ×1
sql++ ×1
tomcat8 ×1
variables ×1