Поставщик службы зависимостей приложения Spring Boot не загружается - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть проект maven, состоящий из нескольких модулей: серверного приложения и модуля базовой библиотеки.Моим серверным приложением является проект Spring Boot 2, и его pom-файл включает мою базовую библиотеку в качестве одной из его зависимостей.

В моем модуле базовой библиотеки у меня определен класс, который выглядит следующим образом:

public class ServiceFunction implements Function<String, String> {
    private DataMapping mapping = new DataMapping();

    @Override
    public String apply(String str) {
        return mapping.apply(str);
    }
}

DataMapping - это класс, который находится в одной из моих транзитивных зависимостей моей базовой библиотеки иего определения выглядят так:

public class DataMapping implements Function<String, String> {
    private FunctionMapping mapping = new FieldMapping();

    @Override
    public String apply(String str) {
        return mapping.apply(str);
    }
}

FunctionMapping также является классом, найденным в той же транзитивной зависимости, и выглядит так:

public class FunctionMapping {
    public String apply(String str) {
        return applyFunction(str);
    }

    private static String applyFunction(String str) {
        DynamicFunction df = DynamicFunction.load();
        return df.apply(str);
    }
}

Теперь DynamicFunction выглядит следующим образом:

public interface DynamicFunction {
    String apply(String str);

    static DynamicField lookup() {
        return ServiceLoader.load(DynamicFunction.class, ClassLoader.getSystemClassLoader()).iterator().next();
    } 
} 

В моем модуле основной библиотеки я предоставляю типичную реализацию SPI, где у меня есть каталог META-INF / services в моем каталоге ресурсов, и у меня есть файл с именем abc.def.DynamicFunction с содержимым ghi.jkl.MyFunction.

Я определил MyFunction как таковую в своей базовой библиотеке:

public MyFunction {
    public String apply(String str) {
        return str.toLowerCase();
    }
}

Теперь, когда мой сервер запускается и в моем ServiceFunction вызывается метод apply()класс, я вижу, что итератор моего ServiceLoader пуст.Есть ли особый способ загрузки служб, который предоставляется в зависимости от моего приложения Spring Boot?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...