目前我正在尝试实现一个以PDF格式生成发票的实用程序类,我预测我之后需要将spring bean注入我的Utility类中。
但是我不需要实现类,我只需要方法。所以对我而言,这是 困境
所以我做了一些研究,但我仍然没有想到如果我想要一个春天的单身豆或者。
Spring Singleton: Source
@Service
public class Singleton {
private static AtomicReference<Singleton> INSTANCE = new AtomicReference<Singleton>();
public Singleton() {
final Singleton previous = INSTANCE.getAndSet(this);
if(previous != null)
throw new IllegalStateException("Second singleton " + this + " created after " + previous);
}
public static Singleton getInstance() {
return INSTANCE.get();
}
}
或最后一堂课:
public final InvoiceUtil {
private InvoiceUtil() {}
public static String convertToPDF (Template template) {
//Do the work
}
}
但是使用第二种方法,我的类不是由Spring管理的,所以我不能向它注入bean。
让我感到不安! :P
答案 0 :(得分:0)
如果您使用Spring bean,请不要使用getInstance()将Spring Service实现为Singleton。只需添加@Service,Spring只会实例化一次。
您可以使用静态方法,然后将任何依赖项也传递给这些方法(如果这些方法很少):
public static String convertToPDF (Template template, NeededHelper helper) {
...
}