春天 - 设计实用程序模块
问题描述:
Spring应用程序设计问题。我想写一个实用程序Java库,这将成为我所有其他小应用程序的依赖项。我所有的应用都是基于弹簧的应用。在实用程序库模块中使用自动布线是一种很好的做法。而这个实用程序库需要从属性文件中读取几个属性。当使用此模块的其他应用程序基于Spring时,我们将如何编写我的通用实用程序库?春天 - 设计实用程序模块
答
如果可以帮助,我不会在实用程序库上使用自动装配。只要使用依赖关系反转来延迟依赖关系的注入,直到实际使用该库为止。然后,您可以在客户端应用程序中将其声明为一个bean,并使用自动装配(如果您愿意的话)。
属性也是一样,只需在相关的方法/构造函数中设置它们的参数,然后就可以使用每个客户端应用程序的属性文件来定义所需的任何属性。
+1
是的,这个。如果每个人都这样做,我会成为一个更快乐的开发者!创建一个'接口MyLibraryConfiguration'并在ctor中接收它;如果用户想要将它实现为Spring bean并注入属于它们的属性。 –
最好的做法是让图书馆尽可能少地依赖于** - 理想上什么都不要。如果您确实引入了依赖关系,请仔细考虑是否有必要,以及它会给图书馆消费者带来什么负担。就我个人而言,我已经嵌入了Spring的库 - 我更喜欢优秀的文档,并且自己在Spring中配置它们。如果您决定,在经过了大量的思考之后,在库中使用Spring可解决比创建更多问题 - 然后_please_使用Spring autoconf并要求用户显式启用该库的功能。 –
查看[Spring文档](https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-auto-configuration.html)。 –
你的库将会与Spring无关(它不应该依赖于Spring依赖)。你最好编写一个适配器来将库与Spring应用程序绑定。 – Andrew