So hava ich eine Mapper-Klasse:Wie kann ich in Guice ein Singleton erstellen, das einen Konstruktor mit einem Flag verwendet?
public class TmaticMapper implements Mapper {
private static final long serialVersionUID = 42L;
private static final Logger log = LoggerFactory.getLogger(TmaticMapper.class);
private MapperFactory mf = null;
private MapperFacade mapperFacade = null;
private Map<String, List<String>> toDoList = new HashMap<String, List<String>>();
public TmaticMapper(Configuration propKey) {
super();
this.mf = this.buildMapperFactory(propKey.toString());
this.mapperFacade = mf.getMapperFacade();
}
Dass ich als Singleton verwenden müssen. Die Klasse ist auf zwei Arten konstruiert, aber ich brauche nur eine davon (und ich möchte wirklich nur eine machen. Es macht Dinge wie das Ändern von Byte-Code und ich will nur, dass es einmal pro Jvm seine Sache macht). Ich habe "@Singleton" und so versucht, aber ich sehe keinen Unterschied beim Start.
Ich benutze diese instantiate:
binder.bind(Mapper.class).annotatedWith(Names.named("RecordToDto")).toInstance(new TmaticMapper(Mapper.Configuration.recordToDto));
und injizieren diese Weise:
@Inject
@Named("RecordToDto")
private Mapper tMapper;
Wie instanziieren ich nur eine dieser beim Start und es spritzen?
Das macht immer noch ein neues ... – markthegrea
jedes mal was? –
Jedes Mal, wenn es getroffen wird? Ich brauche diesen Mapper in mehreren Instanzen anderer Klassen ... – markthegrea