Skip to content

Instantly share code, notes, and snippets.

@bijukunjummen
Created September 20, 2012 12:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bijukunjummen/3755598 to your computer and use it in GitHub Desktop.
Save bijukunjummen/3755598 to your computer and use it in GitHub Desktop.
Factory Method with Argument
package org.bk.samples.factorymethod;
public class A {
private C c;
public A(C c){
this.c = c;
}
public String toString(){
return c.toString();
}
}
package org.bk.samples.factorymethod;
public class B {
public C getInstance(String name){
return new C(name);
}
}
package org.bk.samples.factorymethod;
public class C {
private String val;
public C(String val){
this.val = val;
}
public String toString(){
return this.val;
}
}
package org.bk.samples.factorymethod;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:/org/bk/samples/factorymethod/factorymethodtest.xml")
public class FactoryMethodTest {
@Autowired A a;
@Test
public void testFactoryMethod() {
System.out.println(a.toString());
}
}
<?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 name="b" class="org.bk.samples.factorymethod.B" />
<bean name="a" class="org.bk.samples.factorymethod.A">
<constructor-arg type="org.bk.samples.factorymethod.C">
<bean factory-bean="b" factory-method="getInstance">
<constructor-arg value="aparamval">
</constructor-arg>
</bean>
</constructor-arg>
</bean>
</beans>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment