业务接口:
public
interface
Hello
{
public void print();
}
public void print();
}
两个不同的BEAN实现:
public
class
TestBean
implements
Hello
{
public void print() {
System.out.println( " this is test " );
}
}
public void print() {
System.out.println( " this is test " );
}
}
public
class
TestBean1
implements
Hello
{
public void print() {
System.out.println( " this is test1 " );
}
}
public void print() {
System.out.println( " this is test1 " );
}
}
工厂类:
public
class
SimpleFactoryBean
{
private Hello testBean;
private Hello testBean1;
public Hello getTestBean() {
return testBean;
}
public void setTestBean(Hello testBean) {
this .testBean = testBean;
}
public Hello getTestBean1() {
return testBean1;
}
public void setTestBean1(Hello testBean1) {
this .testBean1 = testBean1;
}
public Hello createBean( int i) {
if (i == 1 ) return testBean;
if (i == 2 ) return testBean1;
return null ;
}
}
private Hello testBean;
private Hello testBean1;
public Hello getTestBean() {
return testBean;
}
public void setTestBean(Hello testBean) {
this .testBean = testBean;
}
public Hello getTestBean1() {
return testBean1;
}
public void setTestBean1(Hello testBean1) {
this .testBean1 = testBean1;
}
public Hello createBean( int i) {
if (i == 1 ) return testBean;
if (i == 2 ) return testBean1;
return null ;
}
}
在SPRING中的配置文件:
<
bean id
=
"
factory
"
class
=
"
org.appfuse.dao.hibernate.SimpleFactoryBean
"
>
< property name = " testBean " ref = " testBean " />
< property name = " testBean1 " ref = " testBean1 " />
</ bean >
< bean id = " testBean " class = " org.appfuse.dao.TestBean " />
< bean id = " testBean1 " class = " org.appfuse.dao.TestBean1 " />
< property name = " testBean " ref = " testBean " />
< property name = " testBean1 " ref = " testBean1 " />
</ bean >
< bean id = " testBean " class = " org.appfuse.dao.TestBean " />
< bean id = " testBean1 " class = " org.appfuse.dao.TestBean1 " />
测试代码:
public
void
testBean()
throws
Exception
{
FactoryBean b = (FactoryBean)ctx.getBean( " &simple " );
SimpleFactoryBean test;
Hello hello;
test = (SimpleFactoryBean)ctx.getBean( " factory " );
hello = test.createBean( 2 );
hello.print();
}
以上代码可以实现根据参数的不同,返回不同的具体类,同时在你的代码里面可以完全不依赖于spring框架。这正是spring的优势所在。
FactoryBean b = (FactoryBean)ctx.getBean( " &simple " );
SimpleFactoryBean test;
Hello hello;
test = (SimpleFactoryBean)ctx.getBean( " factory " );
hello = test.createBean( 2 );
hello.print();
}