Ich habe eine Klasse:Spring-Bean Teil autowire Prototyp Konstruktor
@Slf4j
@Component
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class WebSocketRegistrar extends AbstractWebSocketHandler{
private final ApplicationContext context;
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
// problem here.
context.getBean(WebSocketConsumer.class, session);
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
}
}
und es versucht, einen Prototyp Bohne zu schaffen, wo 1 des Parameters ist ein Runtime-Argument und der Rest hat ich injiziert werden soll. Ich brauche es, um den EventBus und eine Funktion zu nehmen. Beide sind im Kontext verfügbar und ich kann dieses Problem umgehen. Ich versuche zu verstehen, wie ich Teil-Konstruktor autowiring an einem Prototyp tun kann
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@NoArgsConstructor
public class WebSocketConsumer implements Consumer<Identifiable<?>> {
private WebSocketSession session;
private Function<Identifiable<?>, String> jsonApi;
@Autowired
public WebSocketConsumer(WebSocketSession session, EventBus bus, BiFunction<Identifiable<?>, String, String> toJsonApi) {
this.session = session;
this.jsonApi = identifiable -> toJsonApi.apply(identifiable,session.getHandshakeHeaders().get("Host").get(0));
bus.on(R(session.getUri().getPath() + "/?.*"),this::accept);
}
@Override
public void accept(Identifiable<?> update) {
}
}
Ich habe gerade entschuldigt gefunden, dass es nicht die beste Idee sein kann, um Bohnen in der Konfiguration zu autowire, dieser Beitrag geht in Details darüber, was zu tun ist http://stackoverflow.com/questions/28747743/autowire-a-bean- in-springs-java-configuration – Snickers3192
Ich habe meine Antwort bearbeitet, das sollte nun was zu tun sein. – Snickers3192