首页 > 解决方案 > 非 Spring Boot 应用程序中的 Spring 依赖注入

问题描述

我编写了一个main没有Spring Boot应用程序的库,但我仍然想使用 Spring Framework 的依赖注入来加载我的类的依赖项。我希望每个人都可以使用这个库,即使是那些不会使用 Spring 的开发人员。

即使我的库的用户不会使用 Spring,我有没有办法利用 Spring Framework 的依赖注入?

目前我正在将我的库导入到我的另一个应用程序中,但我的依赖项变成了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");
...

不幸的是,使用clientwill 在某些时候抛出一个NullPointerExceptionsince clientServiceis null。我也在以这种方式测试我的应用程序,这就是为什么我知道我有null依赖项。

如果我的应用程序从未运行但仅用作库,我如何利用 Spring 的依赖注入?

这是可能的还是我需要使用每个类构建它自己的依赖项的旧方法?

标签: springdependency-injectionautowired

解决方案


推荐阅读