Внедрение зависимостей Spring в приложения без загрузки - PullRequest
0 голосов
/ 12 февраля 2020

Я пишу библиотеку, в которой нет main и не Spring Boot приложения, но я все же хотел бы использовать инъекцию зависимостей Spring Framework для загрузки зависимостей моих классов. Я бы хотел, чтобы эта библиотека была доступна всем, даже разработчикам, которые не собираются использовать Spring.

Могу ли я воспользоваться преимуществами внедрения зависимостей Spring Framework, даже если пользователи моей библиотеки не будут использовать Spring?

В настоящее время я импортирую свою библиотеку в другую. из моих приложений, но мои зависимости оказываются null. Есть ли способ обойти это?

@Component
public class Client
{
    @Autowired
    private ClientService clientService; // this is null


    public static Client createClientWithCredentials(String clientId, String clientSecret)
    {
        return new Client(clientId, clientSecret);
    }

    private Client(String clientId, String clientSecret)
    {
         // ...
    }
}

@Service
public class ClientService {
    // ...
}

Кто-то, использующий мою библиотеку, использовал бы ее создание таким образом.

...
// Non-Spring project

Client client = Client.createClientWithCredentials("id", "secret");
...

К сожалению, использование client в какой-то момент вызовет NullPointerException, поскольку clientService равно null. Я также тестирую свое приложение таким образом, и поэтому я знаю, что у меня есть null зависимостей.

Как я могу воспользоваться Spring Dependency Injection, если мое приложение никогда не запускается, а используется только как библиотека ?

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

...