小编Dav*_*nes的帖子

Spring Boot 应用程序作为 systemd 服务:日志文件

我知道可以从 Spring Boot 应用程序创建一个可用作 systemd 服务的 jar。我使用手册从我在 Debian Jessie OS 上的应用程序创建 systemd 服务。Eveyrthing 工作正常,但我找不到如何将日志写入 /var/syslog 的单独文件的方法。正如文档所说:

请注意,与作为 init.d 服务运行时不同,运行应用程序的用户、PID 文件和控制台日志文件在 systemd 下的行为不同,必须使用“服务”脚本中的适当字段进行配置。有关更多详细信息,请参阅服务单元配置手册页。

它应该在 *.service 文件中配置,但我找不到任何合适的选项。有人在这个问题上有任何经验吗?

logging debian spring systemd spring-boot

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

Spring Boot Testing:REST控制器中的异常

我有一个Spring Boot应用程序,希望通过集成测试来覆盖我的REST控制器.这是我的控制器:

@RestController
@RequestMapping("/tools/port-scan")
public class PortScanController {
    private final PortScanService service;

    public PortScanController(final PortScanService portScanService) {
        service = portScanService;
    }

    @GetMapping("")
    public final PortScanInfo getInfo(
            @RequestParam("address") final String address,
            @RequestParam(name = "port") final int port)
            throws InetAddressException, IOException {
        return service.scanPort(address, port);
    }
}
Run Code Online (Sandbox Code Playgroud)

在其中一个测试用例中,我想测试端点在某些情况下是否会抛出异常.这是我的测试类:

@RunWith(SpringRunner.class)
@WebMvcTest(PortScanController.class)
public class PortScanControllerIT {
    @Autowired
    private MockMvc mvc;

    private static final String PORT_SCAN_URL = "/tools/port-scan";

    @Test
    public void testLocalAddress() throws Exception {
        mvc.perform(get(PORT_SCAN_URL).param("address", "192.168.1.100").param("port", "53")).andExpect(status().isInternalServerError());
    }
}
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?当前实现不处理从PortScanController.getInfo()抛出的InetAddressException,当我开始测试时,我收到并发生错误:

org.springframework.web.util.NestedServletException: Request processing failed; …
Run Code Online (Sandbox Code Playgroud)

spring integration-testing spring-mvc spring-test spring-boot

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