我正在寻找一些知道SQL语法的Java Swing组件(类似textarea) - 这意味着它可以识别并突出显示它.
如果没有,我将需要自己做,任何有用的建议如何不浪费太多时间(例如,使用哪个组件)?
在下面的代码中,问题是,我不能在不使用dao.list().size()的情况下测试dao.add (),反之亦然.
这种方法是正常还是不正确?如果不正确,怎么改进?
public class ItemDaoTest {
// dao to test
@Autowired private ItemDao dao;
@Test
public void testAdd() {
// issue -> testing ADD but using LIST
int oldSize = dao.list().size();
dao.add(new Item("stuff"));
assertTrue (oldSize < dao.list().size());
}
@Test
public void testFind() {
// issue -> testing FIND but using ADD
Item item = new Item("stuff")
dao.add(item);
assertEquals(item, dao.find(item.getId()));
}
}
Run Code Online (Sandbox Code Playgroud) 给出如下列表:
List<String> names = Lists.newArrayList("George", "John", "Paul", "Ringo")
我想将它转换为这样的字符串:
George, John, Paul and Ringo
我可以用相当笨拙的StringBuilder事情做到这一点:
String nameList = names.stream().collect(joining(", "));
if (nameList.contains(",")) {
StringBuilder builder = new StringBuilder(nameList);
builder.replace(nameList.lastIndexOf(','), nameList.lastIndexOf(',') + 1, " and");
return builder.toString();
}
Run Code Online (Sandbox Code Playgroud)
是否有更优雅的方法?如果需要,我不介意使用库.
注意:
for带索引的旧循环,但我不是在寻找这样的解决方案我在一个Web应用程序(使用Play Framework)上工作,我正在尝试使用Spring MVC迁移到传统的Servlet模型.我想在已有的Jetty容器(netty)中运行嵌入式Jetty容器.
我正在尝试重新使用创建的Spring上下文(包含所有应用程序bean,包括新添加的Spring MVC控制器),但是请求映射没有被选中.
我调试了Spring的Dispatcher Servlet,并且确实没有注册映射(所以它可以处理没有路径).
这是手动Jetty设置代码:
@RequiredArgsConstructor
public class EmbeddedJetty {
private final int port;
private final AnnotationConfigWebApplicationContext existingContext;
@SneakyThrows
public void start() {
Assert.notNull(existingContext.getBean(UserController.class));
val server = new Server(port);
ServletContextHandler handler = new ServletContextHandler();
ServletHolder servlet = new ServletHolder(new DispatcherServlet(existingContext));
handler.addServlet(servlet, "/");
handler.addEventListener(new ContextLoaderListener(existingContext));
server.setHandler(handler);
server.start();
log.info("Server started at port {}", port);
}
}
Run Code Online (Sandbox Code Playgroud)
而这里的控制器被忽略了:
@Controller
public class UserController {
@GetMapping("/users/{userId}")
public ResponseEntity<?> getUser(@PathVariable("userId") long userId) {
return ResponseEntity.ok("I work");
}
}
Run Code Online (Sandbox Code Playgroud)
我需要做些什么来使我的嵌入式jetty设置获取现有的控制器bean并提供映射?
我正在使用CDI 1.0的Weld实现,我找不到如何在Spring中使用bean的方式(使用@Lazy或lazy-init在XML中).有没有办法告诉CDI Injector不要在启动时初始化bean?
我在为Liferay创建portlet时遇到了困难.我有标准安装,Liferay Portal驻留在其中liferay_home/bundles并插入SDK liferay_home/plugins.
我已经安装了新的portlet应用程序liferay_home/plugins/portlets/my-portlet.从那里我运行ant deploy,我可以看到WAR文件已成功组装并被复制到liferay_home/bundles/deploy.
但是,在运行的Liferay Portal实例中,我没有看到刚刚刚刚复制到部署文件夹的portlet .所以,我虽然我将检查出的日志,但是liferay_home/bundles/tomcat-7.0.27/logs是空的.
什么想法可能是错的?
我正在使用JAX-RS客户端来使用REST API.我不想让JAX-RS抛出一堆异常,所以我自己检查Response对象.但有时候,我只关心某些状态代码,我希望JAX-RS 回退到默认行为并抛出一个实际异常(将由AOP建议处理).有一个简单的方法吗?
public void delete(long id) {
Response response = client.delete(id);
Response.Status status = Response.Status.fromStatusCode(response.getStatus());
if (status == Response.Status.OK) {
return;
}
if (status == Response.Status.NOT_FOUND) {
throw new TeamNotFoundException();
}
if (status == Response.Status.CONFLICT) {
throw new TeamHasAssignedUsersException();
}
// if status was internal server error or something similar,
// throw whatever exception you would throw at first place
// magic.throwException(response)
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Spring Data JPA存储库(1.7.2),通常遇到以下情况:
fetch join)Page<Foo>而不是List<Foo>我需要提供countQuery给@Query在返回的存储库中使用提取联接的每个对象Page。此问题已在此StackOverflow问题中进行了讨论
我典型的存储库方法如下所示:
@Query(value = "SELECT e FROM Employee e LEFT JOIN FETCH e.addresses a " +
"WHERE e.company.id = :companyId " +
"AND e.deleted = false " +
"AND e.primaryAddress.deleted = false " +
"ORDER BY e.id, a.id",
countQuery="SELECT count(e) FROM Employee e WHERE e.companyId = :companyId AND e.deleted = false AND e.primaryAddress.deleted = false"
)
Page<Employee> findAllEmployeesWithAddressesForCompany(@Param("companyId") long …Run Code Online (Sandbox Code Playgroud) /companyId/userId/ticket我们提供的机票包含assigneeId:
{"assigneeId":10}
我们需要assigneeId在URL中验证属于公司的companyId路径变量
@RequestMapping(value="/{companyId}/{userId}/ticket", method=POST)
public void createTicket(@Valid @RequestBody Ticket newTicket, @PathVariable Long companyId, @PathVariable Long userId) {
...
}
Run Code Online (Sandbox Code Playgroud)
TicketValidator)(甚至包含依赖项)并验证Ticket实例companyId给这个验证器!我们需要验证ticket.assigneeId属于公司的companyId.任何想法如何在这里实现所需的输出?
我有一个相当简单的代码,它使用 SpringRabbitTemplate向 RabbitMQ 发送消息。该代码对接收消息不感兴趣,这是一个简单的即发即忘场景。
rabbitTemplate.convertAndSend(exchange, routingKey, payload);
模板的创建方式如下(请注意,我使用的是交易通道):
@Bean
public RabbitTemplate rabbitTemplate() {
val rabbitTemplate = new RabbitTemplate(connectionFactory());
rabbitTemplate.setChannelTransacted(true);
rabbitTemplate.setMessageConverter(jsonConverter());
return rabbitTemplate;
}
Run Code Online (Sandbox Code Playgroud)
当 RabbitMQ 服务器过载并且此调用挂起很长时间并且从未超时时,我遇到了一个问题。连接本身并没有中断,但 RabbitMQ 服务器的 RAM 几乎已满,CPU 使用率达到 100%,因此没有响应。
有没有办法配置 SpringRabbitTemplate或底层AmqpTemplate,以便在简单发送阻塞时间过长时超时?
java ×8
spring ×4
rest ×2
cdi ×1
jax-rs ×1
jetty ×1
jpa ×1
liferay ×1
portlet ×1
rabbitmq ×1
spring-data ×1
spring-mvc ×1
swing ×1
tomcat ×1
unit-testing ×1
validation ×1