我有一个 Spring 3 服务方法,我想从中返回一个 PrivateKey/PublicKey keyPair - 将 KeyPairGenerator 作为服务中的实例级变量以避免调用 KeyPairGenerator.getInstance(algo) 并在其中初始化它是否是线程安全的方法调用还是应该将 KeyPairGenerator 保留在服务方法的本地,并为每个方法调用调用 .getInstance(algo) 和 .initialize(...) ,即:
public KeyPair getKeyPair() throws ... {
KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(algo);
keyGenerator.initialize(1024);
return (keyGenerator.genKeyPair());
}
或者
public KeyPair getKeyPair() throws ... {
// use instance level keyGenerator that has been previously initialized
return (keyGenerator.genKeyPair());
}
第二种方法是否存在并发问题?第一种方法的性能损失是否显着?