小编Xor*_*rty的帖子

是否有SQL语法感知Swing组件?

我正在寻找一些知道SQL语法的Java Swing组件(类似textarea) - 这意味着它可以识别并突出显示它.

如果没有,我将需要自己做,任何有用的建议如何不浪费太多时间(例如,使用哪个组件)?

java swing syntax-highlighting

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

如何在不使用"查找"等的情况下测试DAO中的"添加"?

在下面的代码中,问题是,我不能在不使用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)

java unit-testing

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

如何加入列表项,但为最后一项使用不同的分隔符?

给出如下列表:

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带索引的旧循环,但我不是在寻找这样的解决方案
  • 值(名称)中没有逗号

java

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

Embedded Jetty:选择现有的Spring MVC控制器

上下文

我在一个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并提供映射?

java jetty spring-mvc

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

如何使CDI bean懒洋洋地初始化?

我正在使用CDI 1.0的Weld实现,我找不到如何在Spring中使用bean的方式(使用@Lazylazy-init在XML中).有没有办法告诉CDI Injector不要在启动时初始化bean?

spring cdi lazy-initialization

6
推荐指数
3
解决办法
3165
查看次数

Liferay - Tomcat不会从部署文件夹中选择WAR

我在为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空的.

什么想法可能是错的?

tomcat portlet liferay

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

JAX-RS:将响应转换为异常

我正在使用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)

java rest jax-rs

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

Spring Data JPA:如何不在countQueries中重复自己?

我正在使用Spring Data JPA存储库(1.7.2),通常遇到以下情况:

  • 实体具有延迟加载的集合
  • 有时会急切地获取这些集合(通过JPAQL 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)

java spring jpa spring-data

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

Spring MVC(RESTful API):验证依赖于路径变量的有效负载

使用案例:

  • 让我们使用POST HTTP动词设计RESTful创建操作 - 创建票证,其中创建者(分配者)指定票证受让人
  • 我们正在以下位置创建一个新的"门票": /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)
  • 我们可以轻松指定自定义Validator(TicketValidator)(甚至包含依赖项)并验证Ticket实例
  • 我们不能轻易传递companyId给这个验证器!我们需要验证ticket.assigneeId属于公司的companyId.

期望的输出:

  • 能够在自定义验证器中访问路径变量

任何想法如何在这里实现所需的输出?

java validation rest spring bean-validation

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

RabbitMQ + Spring RabbitTemplate:“convertAndSend”超时

我有一个相当简单的代码,它使用 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 spring rabbitmq

6
推荐指数
0
解决办法
711
查看次数