Spring Boot 提供的端點不能知足咱們的業務需求時,咱們能夠自定義一個端點。javascript
博客地址:blog.720ui.com/java
本文,我將演示一個簡單的自定義端點,用來查看服務器的當前時間,它將返回兩個參數,一個是標準的包含時區的當前時間格式,一個是當前時間的時間戳格式。git
首先,咱們須要繼承 AbstractEndpoint 抽象類。由於它是 Endpoint 接口的抽象實現,此外,咱們還須要重寫 invoke 方法。github
值得注意的是,經過設置 @ConfigurationProperties(prefix = "endpoints.servertime"),咱們就能夠在 application.properties 中經過 endpoints.servertime 配置咱們的端點。spring
@ConfigurationProperties(prefix="endpoints.servertime")
public class ServerTimeEndpoint extends AbstractEndpoint<Map<String, Object>> {
public ServerTimeEndpoint() {
super("servertime", false);
}
@Override
public Map<String, Object> invoke() {
Map<String, Object> result = new HashMap<String, Object>();
DateTime dateTime = DateTime.now();
result.put("server_time", dateTime.toString());
result.put("ms_format", dateTime.getMillis());
return result;
}
}複製代碼
上面的代碼,我解釋下,兩個重要的細節。springboot
建立端點配置類,並註冊咱們的端點 ServerTimeEndpoint。服務器
@Configuration
public class EndpointConfig {
@Bean
public static Endpoint<Map<String, Object>> servertime() {
return new ServerTimeEndpoint();
}
}複製代碼
啓動應用微信
@RestController
@EnableAutoConfiguration
@ComponentScan(basePackages = { "com.lianggzone.springboot" })
public class RestfulApiWebDemo {
@RequestMapping("/home")
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(RestfulApiWebDemo.class, args);
}
}複製代碼
訪問 http://localhost:8080/servertime ,此時,你會服務器的當前時間。app
{
"ms_format": 1484271566958,
"server_time": "2017-01-13T09:39:26.958+08:00"
}複製代碼
相關示例完整代碼: springboot-actionide
(完)
更多精彩文章,盡在「服務端思惟」微信公衆號!