如何直接从SpringBoot应用程序类中引用Spring Component

时间:2018-10-19 17:04:03

标签: spring-boot

这听起来像是一个普遍的问题,但是我想在这里非常具体。

我有一个SpringBoot应用程序。我需要能够大部分时间正常运行,但是在构建过程中,我希望能够以“验证模式”运行它,它将进行一些分析以确保它可能成功启动。我们团队中的开发人员可能会犯(经常犯)一些错误,这些错误在他们的台式机上不易发现,但可以在构建过程中发现,并且在部署应用程序时肯定会发现(比我晚。想要)。

因此,我构建了一个原型,以便在Application类(SpringBootServletInitializer的子类)中查看args列表,如果不为空,则假定我们处于“验证模式”,因此我尝试调用进行分析的类,然后在那之后退出。

这个分析类的作用并不重要,但是它确实需要访问Spring框架组件和应用程序组件。例如,它使用ClassPathScanningCandidateComponentProvider,并查看特定基本程序包中的所有组件。

对于它所做的事情,该类工作正常。但是,我不喜欢它的原因是它不容易测试,因为我不得不手动创建CPSCCP,尽管我希望对其进行自动装配。我还希望类本身具有Spring Component注释,因此不必创建它,它会自动连接到Application类。

这里的问题是我不能很好地将Autowire插入Application类,因为它不是Spring组件。

我认为有可能对我进行一个API调用,该调用将使用自动连接的CPSCCP获得Spring组件。但是,我不知道该怎么做。最初,我认为提供here的解决方案是可行的,但是到目前为止,似乎还没有进行组件扫描和bean接线。

我能想到的最好的办法是使我的类成为静态实用程序类,并手动实例化CPSCCP,这使得测试变得很尴尬。

0 个答案:

没有答案