`

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

阅读更多

先看非静态的

先写一个简单工厂

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-实例工厂注入

    首先,我们需要创建一个工厂类,这个类包含一个返回目标对象的静态或非静态方法。例如: ```java public class MyBeanFactory { public static MyBean createMyBean() { return new MyBean(); } } ``` 2. 配置...

    JavaEE spring静态工厂创建实例

    例如,如果你的类需要依赖一些非托管资源,或者创建过程涉及到复杂的逻辑,那么使用静态工厂方法可能会更合适。 总的来说,JavaEE Spring中的静态工厂创建实例是一种高级的DI实现方式,它提供了更多的灵活性和控制...

    SSH笔记-静态/实例工厂方法配置bean

    总结来说,SSH笔记中提到的静态和实例工厂方法是Spring框架中创建Bean的两种非XML方式,它们提供了更高级别的灵活性和控制,特别是在需要自定义对象创建逻辑或依赖注入时。Spring4进一步增强了这些功能,引入了Java...

    Spring 实例化Bean的三种方式

    与静态工厂方法类似,实例工厂方法也用于通过调用一个非静态方法来创建Bean实例。不同之处在于,这个方法是在一个已实例化的对象上调用的,而非在类级别上。这提供了更高级别的灵活性,因为可以利用实例工厂对象的...

    设计模式之简单工厂模式(附demo)

    在实际开发中,简单工厂模式常常与依赖注入、策略模式等其他设计模式结合使用,以提升代码的可维护性和可扩展性。通过阅读`simpleFactory`压缩包中的代码,你可以更深入地理解这个模式的实际应用和优缺点。

    Springioc注入Demo

    对于工厂方法,可以定义一个静态或非静态的工厂方法,并通过`@Bean`注解指定工厂方法。 总之,Spring IOC和DI是现代Java企业级开发中的重要工具,它们降低了组件之间的耦合,提高了代码的灵活性和可维护性。掌握...

    Java static修饰方法

    2. **访问限制**:静态方法可以访问类的静态变量和静态方法,但不能直接访问非静态(实例)变量和方法,因为它们与特定的对象实例相关联。 3. **无this引用**:在静态方法内部,无法使用`this`关键字,因为它指向...

    特殊情况(ActionForm,Servlet, Filter, Listener)下Spring如何注入对象

    需要注意的是,静态字段和方法在多线程环境下可能需要额外的同步控制,以避免并发问题。 对于Servlet、Filter和Listener,由于它们通常在Web应用启动时由容器实例化,而非由Spring管理,所以也不能直接使用@...

    2.设计模式-工厂模式1

    此外,非静态的工厂方法也在很多地方出现,比如`java.net.URLStreamHandlerFactory` 和 `javax.xml.bind.JAXBContext.createMarshaller`。 ### 总结 工厂模式是一种强大的设计模式,它通过抽象出对象的创建过程,...

    Spring高级篇二.pdf

    实例工厂方法实例化则需要先实例化工厂类,然后再调用工厂类中的非静态方法来创建Bean。 Spring中的Bean有其生命周期,包括初始化和销毁两个阶段。在初始化阶段,可以通过init-method属性指定一个方法,该方法会在...

    SpingIOC注入实例化bean

    - **工厂方法**:可以定义一个静态或非静态工厂方法,Spring调用这个方法来实例化bean。 3. **依赖注入(DI)** Spring的依赖注入允许bean之间通过接口而非具体实现进行耦合,提高了代码的可测试性和可维护性。...

    Springtest02.rar

    在Spring中,工厂方法可以是静态的或非静态的,这取决于创建Bean的具体需求。静态工厂方法不需要任何实例,可以直接通过类名调用。在XML配置中,你可以这样定义: ```xml ``` 这里,`createStaticInstance`是`...

    Spring项目bean实例化代码

    在这个例子中,`exampleFactory`首先被实例化,然后其非静态的`createInstance`方法被调用来创建Bean。 在Spring 3.0及以上版本,还可以通过注解配置实现Bean实例化,如使用`@Component`、`@Service`、`@Repository...

    基于java的企业级应用开发:Bean的实例化.ppt

    获取Bean实例时,Spring容器会先创建工厂实例,然后调用工厂的非静态方法。在`beans3.xml`中,`bean3`的实例化就是通过这种方式完成的。 每种实例化方式都有其适用场景。构造器实例化简单直观,适用于大部分情况。...

    工厂模式的IoC应用

    这种工厂模式的实现超越了传统意义上的静态或动态工厂,因为它能够根据配置信息动态地创建和装配bean,提供了高度的灵活性。 例如,你可以通过XML配置文件定义bean及其依赖关系,或者使用注解方式声明bean和它们的...

    beanAssemble.rar

    在配置时,只需提供工厂类名和静态方法名即可。 `bg04:容器中Bean的作用域`是指Bean可以在多个范围中存在,如单例(singleton)、原型(prototype)、请求(request)、会话(session)等。单例Bean在整个应用中...

    spring之xml配置对象创建的三种方式代码

    在XML配置中,可以指定一个静态或非静态工厂方法来创建bean。例如: ```xml &lt;!-- 静态工厂方法 --&gt; &lt;!-- 非静态工厂方法 --&gt; ``` 在这里,`createStaticInstance`和`createInstance`是工厂类中的...

    spring面试总结

    - 实例工厂实例化:使用非静态工厂方法创建Bean,需要在配置中指定工厂Bean及其工厂方法。 4. Spring的作用域: - `id`和`name`属性:`id`是Bean的唯一标识,而`name`可以有多个,但如果有冲突,后面的会覆盖前面...

    Java-Spring-SpringIoC容器-SpringIoC的学习

    2. **工厂方法配置**:对于非静态工厂类,可以通过`factory-bean`指定工厂对象,`factory-method`指定工厂方法,如`clientService2`。对于静态工厂类,可以直接在`class`属性中指定工厂方法,如`clientService`。 3...

    Spring学习资料

    在Spring中,Bean可以通过三种方式创建:通过构造方法、静态工厂方法和非静态工厂方法。依赖注入可以通过构造器注入和setter注入实现。构造器注入在创建对象时就确定依赖关系,安全性较高但需要为每个属性赋值;...

Global site tag (gtag.js) - Google Analytics