「タペストリーのしくみ」を理解することで、小さな問題が再び発生します。タペストリー:ランタイムに注入
私は(この場合の値エンコーダ)タペストリーコンポーネント持っ:
public class EditionEncoder implements ValueEncoder<Edition>, ValueEncoderFactory<Edition> {
@Inject
private IEditionManager editionDao;
public EditionEncoder(IEditionManager editionDao) {
this.editionManager = editionDao;
}
@Override
public String toClient(Edition value) {
if(value == null) {
return "";
}
return value.getName();
}
@Override
public Edition toValue(String clientValue) {
if(clientValue.equals("")) {
return null;
}
return editionManager.getEditionByName(clientValue);
}
@Override
public ValueEncoder<Edition> create(Class<Edition> type) {
return this;
}
}
エンコーダは、そのようなページ内で作成されるため、マネージャが動作していない注入:
public void create() {
editionEncoder = new EditionEncoder();
}
をこのことにより、casued
、私はこの醜いソリューションを使用するように強制しています:
@Inject
private IEditionManager editionmanager;
editionEncoder = new EditionEncoder(editionManager);
をより良い方法はありますランタイム中にコンポーネントを注入するか、それとも一般的にはより良いソリューションですか?事前にあなたの助けのための
おかげで、できるだけ早くあなたが「新しい」はその後、タペストリー、IOCは、オブジェクトの作成に関与していない使用して注入することはできませんよう
yip、それは私には明らかです。しかし、例えば。春には手動でインスタンス化されたオブジェクトで注入機構を「強制」することが可能です。 私は同様の方法を探しています。 – user3066027