具有弹簧靴2.0.0的锅炉板项目不暴露自定义执行器端点

时间:2018-03-23 09:21:46

标签: spring-boot spring-boot-actuator

我正在尝试将spring boot样板项目升级到Spring boot 2.0.0。 我按照官方迁移指南(thisthis)进行了操作,但无法公开执行器自定义端点

我测试了这个虚拟端点:

void printPrimes(long long l, long long r, vector<int>& primes) {
 // some code
}
vector<int> sieve() {
 vector<int> prime;
 return prime;

}
int main() {
    vector<int> primes = sieve();
    printPrimes(l, r, primes);
}

如果直接从子项目中公开,端点可以正常工作,但如果端点从作为依赖项添加的父样板项目中公开,则端点不起作用。

在我的application.yml中,我添加了:

import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.boot.actuate.endpoint.annotation.Selector;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Component
@Endpoint(id="testing-user")
public class ActiveUsersEndpoint {

private final Map<String, User> users = new HashMap<>();

ActiveUsersEndpoint() {
    this.users.put("A", new User("Abcd"));
    this.users.put("E", new User("Fghi"));
    this.users.put("J", new User("Klmn"));
}

@ReadOperation
public List getAll() {
    return new ArrayList(this.users.values());
}

@ReadOperation
public User getActiveUser(@Selector String user) {
    return this.users.get(user);
}

public static class User {
    private String name;

    User(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
}

没有多少资源可供使用,而且这些资源并没有帮助。

1 个答案:

答案 0 :(得分:3)

找到答案。

不是使用@Component创建bean,而是使用配置文件来创建端点的所有bean。例如,配置文件可能如下所示:

@ManagementContextConfiguration
public class HealthConfiguration {

@Bean
public ActiveUsersEndpoint activeUsersEndpoint() {
    return new ActiveUsersEndpoint();
}
// Other end points if needed...
}

重要的是在资源中包含spring.factories个文件。 该文件将指向您在其中创建所有端点的bean的配置文件: org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration=com.foo.bar.HealthConfiguration