Me gustaría crear método de productor de frijol de un muelle que es consciente de que la invocó, por lo que he empezado con el siguiente código:¿Cuál es el equivalente de Spring DI del InjectionPoint de CDI?
@Configuration
public class LoggerProvider {
@Bean
@Scope("prototype")
public Logger produceLogger() {
// get known WHAT bean/component invoked this producer
Class<?> clazz = ...
return LoggerFactory.getLogger(clazz);
}
}
¿Cómo puedo obtener la información que quiere obtener el grano ¿inyectado?
Estoy buscando un equivalente de CDI's InjectionPoint
en el mundo de la primavera.
Gracias Ralph! Ok, entonces este 'BeanPostProcessor' se invoca cada vez que se inyecta cualquier bean en cualquier lugar. ¿Hay alguna forma en que pueda reconocer ** qué ** será inyectado? Quiero decir que obtuve: 'postProcessBeforeInitialization (Object bean, String beanName)' donde 'bean' es un bean que quiere que se haga la inyección (la parte ** who ** que hice en mi pregunta), y' beanName 'es el nombre' bean'. Ahora no sé qué campo de 'bean' quiere que se haga la inyección; en otras palabras, no sé si el bean inyectado es' LoggerProvider' u otra cosa. –
¡Según lo que entiendo, el post procesador se invoca después de que se crea un bean! (no inyectado en ninguna parte) La idea era implementar su propio marco de inyección pequeño sobre ese procesador de posos de frijol. – Ralph
Ok, entonces se llamará al implementador 'BeanPostProcessor' siempre que se cree un bean. Entonces, tu idea era implementar 'postProcessBeforeInitialization' y por ej. Escanee los campos que tienen mi anotación personalizada (digamos '@ Logger') y, a través de la reflexión, inicialice dicho campo usando mi propia lógica personalizada. ¿Fue este tu enfoque o lo he complicado demasiado? ¡Gracias una vez más! –