`

工厂方法注入(静态和非静态)

阅读更多

先看非静态的

先写一个简单工厂

package com.lbx.factory;

import com.lbx.model.Car;

/**
 * 这是非静态的工厂方法注入
 * @author Administrator
 *
 */
public class CarFactory {

	public Car createHongQiCar(){
		Car car = new Car();
		car.setName("红旗");
		car.setSpeed("200");
		return car;
	}
	
}

 

 

对应的bean.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="carFactory" class="com.lbx.factory.CarFactory"></bean>
<bean id="car" factory-bean="carFactory" factory-method="createHongQiCar"></bean>

</beans>

 

 

 

 

 

再看静态的(无需依赖工厂的bean)

工厂类

package com.lbx.factory;

import com.lbx.model.Car;
/**
 * 这是静态的工厂方法注入
 * @author Administrator
 *
 */
public class CarFactory2 {

	public static Car createHongQiCar(){
		Car car = new Car();
		car.setName("红旗");
		car.setSpeed("200");
		return car;
	}
	
}

 

 

对应的bean2.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="car" class="com.lbx.factory.CarFactory2" factory-method="createHongQiCar"></bean>

</beans>

 

分享到:
评论

相关推荐

    初识Spring

    (1)用无参构造方法创建对象(2)用带参的构造方法创建对象(3)用静态工厂创建对象(4)用非静态工厂创建对象Spring的单例模式和多例模式Spring框架的依赖注入依赖注入简介依赖注入的类型:(1)setter方法注入:...

    Spring 3 Reference中文

    4.3.2.2 使用静态工厂方法来实例化.. 36 4.3.2.3 使用实例工厂方法来实例化.. 37 4.4 依赖 38 4.4.1 依赖注入. 38 4.4.1.1 基于构造方法的依赖注入 39 4.4.1.2 基于setter 方法的依赖注入...

    java8集合源码-uedi:Java应用程序的令人不安的简单依赖注入

    java8集合源码令人不安的简单依赖注入 如果你碰巧浪费时间重新发明轮子,至少让它变得方正。...实现Factory的类的所有公共(非本地、非静态)方法都转换为Providers 。 当请求工厂提供的实例时,方法

    spring.net中文手册在线版

    通过静态工厂方法创建对象 4.2.3.3.通过实例工厂方法创建对象 4.2.4.泛型类的对象创建 4.2.4.1.通过构造器创建泛型类的对象 4.2.4.2.通过静态工厂方法创建泛型类的对象 4.2.4.3.通过实例工厂方法创建泛型类的对象...

    spring in action英文版

     2.2.3 通过Set方法注入依赖  2.2.4 通过构造函数注入依赖  2.3 自动装配  2.3.1 处理自动装配中的不确定性  2.3.2 混合使用自动和手动装配  2.3.3 缺省自动装配  2.3.4 何时采用自动装配  ...

    asp.net知识库

    C#静态成员和方法的学习小结 C#中结构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件...

    spring 黑马教程

    3、Spring容器内部对象的创建:可以使用类构造器实例化、静态工厂方法实例化等方式来创建对象。 4、初始化bean时机:Spring默认在启动时将所有singleton bean提前进行实例化。 Spring的使用可以简化企业开发,...

    Spring面试题

    spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。 设置注入的优点:直观,自然 构造注入的优点:可以在构造器中决定依赖关系的顺序。 什么是AOP? 面向切面编程(AOP)完善spring的...

    最新Java面试宝典pdf版

    13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域...

    Java面试笔试资料大全

    13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域...

    千方百计笔试题大全

    34、是否可以从一个static 方法内部发出对非static 方法的调用? 11 35、写clone()方法时,通常都有一行代码,是什么? 11 36、GC 是什么? 为什么要有GC? 11 37、垃圾回收的优点和原理。并考虑2 种回收机制。 11 38...

    java面试宝典

    34、是否可以从一个static 方法内部发出对非static 方法的调用? 11 35、写clone()方法时,通常都有一行代码,是什么? 11 36、GC 是什么? 为什么要有GC? 11 37、垃圾回收的优点和原理。并考虑2 种回收机制。 11 38...

    Java面试宝典2010版

    13、是否可以从一个static方法内部发出对非static方法的调用? 14、Integer与int的区别 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 16、下面的代码有什么不妥之处? 17、请说出作用域public,...

    JAVA面试宝典2010

    13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域...

    Java面试宝典-经典

    13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域...

    java面试题大全(2012版)

    13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用域...

    Java面试宝典2012版

    13、是否可以从一个static方法内部发出对非static方法的调用? 12 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 13 16、下面的代码有什么不妥之处? 13 17、请说出作用...

    java面试宝典2012

    13、是否可以从一个static方法内部发出对非static方法的调用? 13 14、Integer与int的区别 13 15、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 14 16、下面的代码有什么不妥之处? 14 17、请说出作用域...

Global site tag (gtag.js) - Google Analytics