la función de primavera de los argumentos de paso a constructor de utilizar el trabajo de búsqueda método no funciona en la primavera 3.2.11, pero está trabajando en la versión 4.1.1 de primavera
aquí el código que utiliza para comprobar que:
esta es la fábrica de interfaz ...
package prueba;
public interface Factory {
Person createPersonWithDependencies(String name);
}
este es el frijol queremos ser gestionado por la primavera, la inyección de HelloWorldService ...
package prueba;
public class Person {
private HelloWorldService helloWorldService;
public final void setHelloWorldService(HelloWorldService extraService) {
this.helloWorldService = extraService;
}
public Person() {
super();
}
public Person(String name) {
super();
this.name = name;
}
private String name;
public final String sayHello() {
return helloWorldService.getGreeting()+" I am "+name;
}
}
este es el famoso servicio de holamundo:
package prueba;
public class HelloWorldService {
public String getGreeting(){
return "hello world";
}
}
este es un servicio de ejemplo que utiliza la fábrica
package prueba;
public class Service {
private Factory factory;
public final void setFactory(Factory factory) {
this.factory = factory;
}
public void doSomeThing(){
Person bean1= factory.createPersonWithDependencies("Jhon");
System.out.println(bean1.sayHello());
Person bean2= factory.createPersonWithDependencies("Maria");
System.out.println(bean2.sayHello());
System.out.println(bean1.sayHello());
}
}
esta es la clase principal que pone a prueba toda
package prueba;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestLookupMethodWithArguments {
/**
* Main method.
*/
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/applicationContext.xml");
Service service=applicationContext.getBean("service",Service.class);
service.doSomeThing();
}
}
y finalmente el archivo de configuración de primavera:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="helloWorldService" class="prueba.HelloWorldService" />
<bean id="Person" class="prueba.Person" scope="prototype">
<property name="helloWorldService" ref="helloWorldService" />
</bean>
<bean id="myFactory" class="prueba.Factory">
<lookup-method name="createPersonWithDependencies" bean="Person" />
</bean>
<bean id="service" class="prueba.Service">
<property name="factory" ref="myFactory" />
</bean>
</beans>
la salida usando la primavera 4.1.1
hello world I am Jhon
hello world I am Maria
hello world I am Jhon
Información muy buena y agradable. Gracias –
Actualización: Esta característica NO es parte de la primavera todavía. – javadeveloper
¿esto es compatible con Spring 4 ahora? –