Я пишу библиотеку, в которой нет 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, если мое приложение никогда не запускается, а используется только как библиотека ?
Возможно ли это, или мне нужно использовать старый способ для каждого класса, создающего свои собственные зависимости?