在哪里注入课程。在使用类或调用者类中

时间:2016-09-05 09:00:03

标签: java spring oop spring-boot

我有一个PropertiesUtil类,它用作我]文件的某些配置属性的容器。

application.properties

我必须在我的应用程序中的不同位置使用此类。

我的问题是我是否应该在我需要的每个地方注入此类,或者我应该在调用者类上注入此类并将其作为参数提供给方法。

例如使用class注入:

@Component
@ConfigurationProperties(prefix = "application.property")
public abstract class PropertiesUtil {

    private String networkLocation;
    private String topLevelPrefix;

或者例如在调用者类中注入:

@Component
public class FileExport {

    private final PropertiesUtil propertiesUtil;

    @Autowired
    public FileExport(PropertiesUtil propertiesUtil) {
        this.propertiesUtil = propertiesUtil;
    }

    public List<File> getListOfFileAndRules(String topLevelName){
      // logic and use of propertiesUtil
    }

2 个答案:

答案 0 :(得分:1)

我会将它注入using类,因为你的调用者类不需要这些信息。如果你有不同的'使用'类,我会考虑为extends和amp;创建一个抽象类。将注射剂放在这个中。

如果您将属性放入调用者类,则将其放入API中,这样做并不好。您的课程在使用中应尽可能简单,也适用于测试。

答案 1 :(得分:1)

这取决于应用程序的体系结构和配置参数的类型。我经常区分运行时和启动配置 - 第一个用于更改或仅可能在运行时更改,后者旨在启动时设置(或一次)并且在应用程序运行时没有更改。

在你的情况下,我假设params是启动配置,因此我建议将它注入所有需要它的类。

相关问题