Получить путь аннотации веб-сервисов в java

у меня есть вызов класса Vtiger_Services, в котором у меня много методов веб-служб... Я хочу получить аннотацию каждой веб-службы и сохранить ее в виде строки в arraylist

примеры веб-сервисов в Vtiger_Services:

    @Path("getCustomers")
@GET
@Produces(MediaType.APPLICATION_JSON)
public String getCustomers(@HeaderParam("token") String token) {
    if (token.equalsIgnoreCase(this.token)) {
        String sql = "select * from tab1";
        Database db = new Database();
        String json = db.executeQueryTOJSON(sql);
        return json;
    } else
        return "{\"error\":\"bad token provided\"}";
}

Я хочу получить значение @Path

Я сделал этот метод, чтобы получить имя

for(int i = 0; i < Vtiger_Services.class.getMethods().length; i++)
            {
                if (Vtiger_Services.class.getMethods()[i].getParameters().length > 0 && 
                   Vtiger_Services.class.getMethods()[i].getParameters()[0].getType().getSimpleName().equals("String") &&
                   Vtiger_Services.class.getMethods()[i].getReturnType().getSimpleName().equals("String"))
                {
                        con.createStatement().execute("INSERT INTO Services (Name) VALUES ('"+ Vtiger_Services.class.getDeclaredMethods()[i].getName()+"')");

                }                                                           
            }

Можете ли вы объяснить, что вы получаете в настоящее время и что вы ожидаете получить? Также пример набора данных поможет...

Lukas 21.01.2019 18:29
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать java-рефлексию для получения методов классов, а затем искать аннотации к этим методам.

public class Test {
    @Path("getCustomers")
    public void test() {

    }

    public static List<String> getMethodsAnnotatedWith(final Class<?> type) {
        final List<String> paths = Lists.newArrayList();
        Class<?> clazz = type;
        while (clazz != Object.class) {
            final List<Method> allMethods = new ArrayList<>(Arrays.asList(clazz.getDeclaredMethods()));
            for (final Method method : allMethods) {
                Path path = method.getAnnotation(Path.class);
                if (path != null) {
                    paths.add(path.value());
                }
            }
            // move to the upper class in the hierarchy in search for more methods
            clazz = clazz.getSuperclass();
        }
        return paths;
    }

    public static void main(String[] args) {
        System.out.println(getMethodsAnnotatedWith(Test.class));
    }

}

Я обновляю метод, чтобы получить имя каждой веб-службы. Как я могу изменить его, чтобы получить аннотации?

mego 21.01.2019 17:00

Вы можете дать более подробную информацию? Ошибка компиляции или выполнения?

jaudo 21.01.2019 17:34

Другие вопросы по теме