先看非静态的
先写一个简单工厂
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>
分享到:
相关推荐
首先,我们需要创建一个工厂类,这个类包含一个返回目标对象的静态或非静态方法。例如: ```java public class MyBeanFactory { public static MyBean createMyBean() { return new MyBean(); } } ``` 2. 配置...
例如,如果你的类需要依赖一些非托管资源,或者创建过程涉及到复杂的逻辑,那么使用静态工厂方法可能会更合适。 总的来说,JavaEE Spring中的静态工厂创建实例是一种高级的DI实现方式,它提供了更多的灵活性和控制...
总结来说,SSH笔记中提到的静态和实例工厂方法是Spring框架中创建Bean的两种非XML方式,它们提供了更高级别的灵活性和控制,特别是在需要自定义对象创建逻辑或依赖注入时。Spring4进一步增强了这些功能,引入了Java...
与静态工厂方法类似,实例工厂方法也用于通过调用一个非静态方法来创建Bean实例。不同之处在于,这个方法是在一个已实例化的对象上调用的,而非在类级别上。这提供了更高级别的灵活性,因为可以利用实例工厂对象的...
在实际开发中,简单工厂模式常常与依赖注入、策略模式等其他设计模式结合使用,以提升代码的可维护性和可扩展性。通过阅读`simpleFactory`压缩包中的代码,你可以更深入地理解这个模式的实际应用和优缺点。
对于工厂方法,可以定义一个静态或非静态的工厂方法,并通过`@Bean`注解指定工厂方法。 总之,Spring IOC和DI是现代Java企业级开发中的重要工具,它们降低了组件之间的耦合,提高了代码的灵活性和可维护性。掌握...
2. **访问限制**:静态方法可以访问类的静态变量和静态方法,但不能直接访问非静态(实例)变量和方法,因为它们与特定的对象实例相关联。 3. **无this引用**:在静态方法内部,无法使用`this`关键字,因为它指向...
需要注意的是,静态字段和方法在多线程环境下可能需要额外的同步控制,以避免并发问题。 对于Servlet、Filter和Listener,由于它们通常在Web应用启动时由容器实例化,而非由Spring管理,所以也不能直接使用@...
此外,非静态的工厂方法也在很多地方出现,比如`java.net.URLStreamHandlerFactory` 和 `javax.xml.bind.JAXBContext.createMarshaller`。 ### 总结 工厂模式是一种强大的设计模式,它通过抽象出对象的创建过程,...
实例工厂方法实例化则需要先实例化工厂类,然后再调用工厂类中的非静态方法来创建Bean。 Spring中的Bean有其生命周期,包括初始化和销毁两个阶段。在初始化阶段,可以通过init-method属性指定一个方法,该方法会在...
- **工厂方法**:可以定义一个静态或非静态工厂方法,Spring调用这个方法来实例化bean。 3. **依赖注入(DI)** Spring的依赖注入允许bean之间通过接口而非具体实现进行耦合,提高了代码的可测试性和可维护性。...
在Spring中,工厂方法可以是静态的或非静态的,这取决于创建Bean的具体需求。静态工厂方法不需要任何实例,可以直接通过类名调用。在XML配置中,你可以这样定义: ```xml ``` 这里,`createStaticInstance`是`...
在这个例子中,`exampleFactory`首先被实例化,然后其非静态的`createInstance`方法被调用来创建Bean。 在Spring 3.0及以上版本,还可以通过注解配置实现Bean实例化,如使用`@Component`、`@Service`、`@Repository...
获取Bean实例时,Spring容器会先创建工厂实例,然后调用工厂的非静态方法。在`beans3.xml`中,`bean3`的实例化就是通过这种方式完成的。 每种实例化方式都有其适用场景。构造器实例化简单直观,适用于大部分情况。...
这种工厂模式的实现超越了传统意义上的静态或动态工厂,因为它能够根据配置信息动态地创建和装配bean,提供了高度的灵活性。 例如,你可以通过XML配置文件定义bean及其依赖关系,或者使用注解方式声明bean和它们的...
在配置时,只需提供工厂类名和静态方法名即可。 `bg04:容器中Bean的作用域`是指Bean可以在多个范围中存在,如单例(singleton)、原型(prototype)、请求(request)、会话(session)等。单例Bean在整个应用中...
在XML配置中,可以指定一个静态或非静态工厂方法来创建bean。例如: ```xml <!-- 静态工厂方法 --> <!-- 非静态工厂方法 --> ``` 在这里,`createStaticInstance`和`createInstance`是工厂类中的...
- 实例工厂实例化:使用非静态工厂方法创建Bean,需要在配置中指定工厂Bean及其工厂方法。 4. Spring的作用域: - `id`和`name`属性:`id`是Bean的唯一标识,而`name`可以有多个,但如果有冲突,后面的会覆盖前面...
2. **工厂方法配置**:对于非静态工厂类,可以通过`factory-bean`指定工厂对象,`factory-method`指定工厂方法,如`clientService2`。对于静态工厂类,可以直接在`class`属性中指定工厂方法,如`clientService`。 3...
在Spring中,Bean可以通过三种方式创建:通过构造方法、静态工厂方法和非静态工厂方法。依赖注入可以通过构造器注入和setter注入实现。构造器注入在创建对象时就确定依赖关系,安全性较高但需要为每个属性赋值;...