Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将一个类设置为Singleton,而不是每次使用它时都注入该类_Java_Api_Design Patterns_Singleton - Fatal编程技术网

Java 将一个类设置为Singleton,而不是每次使用它时都注入该类

Java 将一个类设置为Singleton,而不是每次使用它时都注入该类,java,api,design-patterns,singleton,Java,Api,Design Patterns,Singleton,我有一个类,在我的项目中用作公共类。该类可以访问该类中注入的其他一些核心类,通过它们我可以调用一些API。因此,当我需要在类中调用API时,我通常会注入这个公共类并使用特定的API。但是当我在许多其他类中注入公共类时,所有的核心类也会被注入,即使我需要使用一个或两个核心类。 这是我的普通课 public class ApiService { private StuResource stuResource; private VendResource vendResource; private E

我有一个类,在我的项目中用作公共类。该类可以访问该类中注入的其他一些核心类,通过它们我可以调用一些API。因此,当我需要在类中调用API时,我通常会注入这个公共类并使用特定的API。但是当我在许多其他类中注入公共类时,所有的核心类也会被注入,即使我需要使用一个或两个核心类。 这是我的普通课

public class ApiService {

private StuResource stuResource;
private VendResource vendResource;
private EduResource eduResource;
private RKEResource rKEResource;
private AleResource aleResource;
private GloResource gloResource;


@Inject
public ApiService(StuResource stuResource, VendResource vendResource,
     EduResource eduResource, RKEResource rKEResource,
     AleResource aleResource, GloResource gloResource) {
  this.stuResource  = stuResource;
  this.vendResource = vendResource;
  this.eduResource = eduResource;
  this.rKEResource = rKEResource;
  this.aleResource = aleResource;
  this.gloResource = gloResource;
}

{Methods for call APIs}

}
所以我计划使用单例模式,这样我可以一次性创建一个公共类的对象,并且可以在其他类的任何地方使用该对象。
在这个实现中帮助我。在这种情况下,我如何实现单例模式。

这根本不是一个好主意-将所有功能放在一个地方

为每个业务流程创建单独的服务,只为它们提供所需的资源。即

@Component
public class SchoolService {

    private StuResource stuResource;
    private EduResource eduResource;
    private GloResource gloResource;


    @Inject
    public SchoolService(StuResource stuResource, EduResource eduResource, GloResource gloResource) {
        this.stuResource  = stuResource;
        this.eduResource = eduResource;
        this.gloResource = gloResource;
    }

    {Methods for call APIs}

}
然后

等等

这些类中的每一个都是您想要的单例

@Component
public class PayService {

    private VendResource vendResource;
    private EduResource eduResource;

    @Inject
    public ApiService(VendResource vendResource, EduResource eduResource) {
        this.vendResource = vendResource;
        this.eduResource = eduResource;
    }

    {Methods for call APIs}

}