我正在尝试在运行时在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/