我正在尝试在运行时在Web应用程序中检索一组JNDI密钥。
代码如下:

class Test{
    private final String someUrl;

    public Test(@Named("URL") String someUrl){
    // do something
    }

     public void dotEST( string someUrl){
      String x = someUrl;
      //some other logic
     }

}


我想了解使用上面的代码和此代码之间的区别:

class Test{
    private final Provider<String> someUrl;

    public Test(@Named("URL") Provider<String> someUrl){
    // do something
    }

     public void dotEST( Provider<String> someUrl){
      String x = someUrl.get();
      //some other logic
     }
}


什么时候以及为什么要使用提供程序?

最佳答案

 public Test(@Named("URL") String someUrl){


要调用此方法,必须已解析someUrl并且它可用(例如,对于容器)

public Test(@Named("URL") Provider<String> someUrl){


在这里,检索可以推迟(甚至不完成)-与延迟初始化类似。它取决于Provider接口的实现。

关于java - javax.inject.Provider与字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56344624/

10-11 02:16