Spring的实例工厂方法和静态工厂方法实例代码
Spring的实例工厂方法和静态工厂方法都可以用来实例化bean,本文我们就来看看相关实例。
静态工厂方法:直接调用静态方法可以返回Bean的实例
packagecom.zhu.string.factory;
importjava.util.HashMap;
importjava.util.Map;
publicclassStaticCarFactory{
/**
*静态工厂方法:直接调用静态方法可以返回Bean的实例
*
*/
privatestaticMapcars=newHashMap();
static{
cars.put("audi",newCar(3000,"aodi"));
cars.put("fodo",newCar(3000,"aodi"));
}
//静态工厂方法
publicstaticCargetCar(Stringname){
returncars.get(name);
}
}
实例工厂方法。即调用工厂本身,再调用工厂的实例方法来返回bean实例
packagecom.zhu.string.factory;
importjava.util.HashMap;
importjava.util.Map;
publicclassInstanceCarFactory{
/**
*实例工厂方法。即调用工厂本身,再调用工厂的实例方法来返回bean实例
*/
privateMapcars=null;
publicInstanceCarFactory(){
//TODOAuto-generatedconstructorstub
cars=newHashMap();
cars.put("audi",newCar(1000,"audi"));
cars.put("dffdas",newCar(2000,"audi"));
}
publicCargetCar(Stringbrand){
returncars.get(brand);
}
}
beans-factory.xml
Car.java实体类
packagecom.zhu.string.factory;
publicclassCar{
privatedoubleprice;
privateStringbrand;
publicdoublegetPrice(){
returnprice;
}
publicvoidsetPrice(doubleprice){
this.price=price;
}
publicStringgetBrand(){
returnbrand;
}
publicvoidsetBrand(Stringbrand){
this.brand=brand;
}
@Override
publicStringtoString(){
return"Car[brand="+brand+",price="+price+"]";
}
publicCar(){
System.out.println("cars....constructor");
}
publicCar(doubleprice,Stringbrand){
super();
this.price=price;
this.brand=brand;
}
}
Main.java
packagecom.zhu.string.factory;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
publicclassMain{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
ApplicationContextcx=newClassPathXmlApplicationContext("beans-
factory.xml");
Carcar1=(Car)cx.getBean("car1");
System.out.println(car1);
Carcar2=(Car)cx.getBean("car2");
System.out.println(car2);
}
}
运行结果:
Car[brand=aodi,price=3000.0]
Car[brand=audi,price=1000.0]
总结
以上就是本文关于Spring的实例工厂方法和静态工厂方法实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。