Saltar al contenido

Cómo pasar parámetros dinámicamente a Spring beans

Investigamos por todo el mundo on line para así brindarte la solución para tu problema, en caso de alguna duda puedes dejarnos un comentario y respondemos sin falta, porque estamos para servirte.

Solución:

Si te entiendo bien, entonces la respuesta correcta es usar getBean(String beanName, Object... args) método, que pasará argumentos al bean. Puedo mostrarle cómo se hace para una configuración basada en Java, pero tendrá que averiguar cómo se hace para una configuración basada en XML.

@Configuration
public class ApplicationConfiguration 
      
  @Bean
  @Scope("prototype")  // As we want to create several beans with different args, right?
  String hello(String name) 
    return "Hello, " + name;
  


// and later in your application

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfiguration.class);
String helloCat = (String) context.getBean("hello", "Cat");
String helloDog = (String) context.getBean("hello", "Dog");

¿Es esto lo que estás buscando?


ACTUALIZAR

Esta respuesta recibe demasiados votos a favor y nadie mira mi comentario. Aunque es una solución al problema, se considera como un Spring anti-patrón ¡y no deberías usarlo! Hay varias formas diferentes de hacer las cosas bien usando fábrica, método de búsqueda, etc.

Utilice la siguiente publicación SO como punto de referencia:

  • ¿Cómo crear instancias de beans administrados por Spring en tiempo de ejecución?

Por favor, eche un vistazo a la inyección de Constructor.

Además, eche un vistazo a IntializingBean y BeanPostProcessor para conocer otras intercepciones del ciclo de vida de un springbean.

Creo que las respuestas propuestas anteriormente para usar la inyección de constructor/inyección de setter no funcionan perfectamente para el caso de uso que está buscando. La primavera tarda más o menos static valores de argumento para constructores/establecedores. No veo una forma de pasar valores dinámicamente para obtener un Bean de Spring Container. Sin embargo, si desea obtener instancias de User_Imple dinámicamente, recomendaría usar una clase de fábrica User_Imple_Factory


    public class User_Imple_factory 
        private static ApplicationContext context =new ClassPathXmlApplicationContext("/bean.xml");

        public User_Imple createUserImple(int id) 
            User user = context.getBean("User");
            return new User_Imple(id, user);
        
    

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *