0
私はSpringには新しく、テンプレートBeanのbeanGeneratorを書いてみたいと思います。私はスレッドセーフの懸念を克服するために、このジェネレータを使用したいと思います。誰も私がこの作業をするためにコードを追加/修正するのを手伝ってもらえますか?実際の問題を説明するのは難しいですから、次のコードで問題を抽象化します。実行時にBean定義オブジェクトを使用して新しいSpring Beanを生成/作成するにはどうすればよいですか?
abstract class BeanDefinition {
abstract public void preprocess();
}
// now we have 1st user specific bean :
class UserSpecifiedBeanDefinition extends BeanDefinition{
@override
public void preprocess() {
// do something
}
}
// we could have more user-specific beans that extend BeanDefinition
....
// Following generator class is used to generate beans
public class BeanGenerator {
private BeanDefinition beanDefinition;
public BeanGenerator(BeanDefinition beanDefinition) {
this.beanDefinition = beanDefinition;
}
public generate() {
BeanDefinition newBean = // create new bean based on beanDefinition? how can I make this work??
newBean.preprocess();
return newBean;
}
}
// In spring.xml, I would like to use them like:
<bean id="generator1" class="com.xxx.xxx.BeanGenerator">
<constructor-arg name="beanDefinition" ref="userSpecifiedBeanDefinition"/>
</bean>
あなたはスコーププロトタイプの豆で見てきた
newInstance()
コールにパラメータを渡すように変更する必要があるパラメータを持つコンストラクタを持っている場合は、クラスにをインスタンス化するためにリフレクションを使用しますか? – Thierry
@Thierryはい、この場合、プロトタイプスコープを使用する方法は考えていません。あなたは私にもう少しこれを指摘できますか?この場合、私は抽象的なBean定義を持っており、後のユーザーは独自の具体的なBean定義を定義し、Generatorは異なる具体的な定義に基づいてBeanを生成します。 – Lubor