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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。