java
User.java
package com.spring.factory; public class User { private String name; private String address; public User() { System.out.println("create user..."); } public User(String name, String address) { super(); this.name = name; this.address = address; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User [name=" + name + ", address=" + address + "]"; } }
UserStaticFactory.java
package com.spring.factory; import java.util.HashMap; import java.util.Map; //静态工厂类 public class UserStaticFactory { private static Map<String, User> users = new HashMap<String ,User>(); static{ users.put("matt", new User("matt","SH")); users.put("joy", new User("joy","SH")); } public static User getUser(String name){ return users.get(name); } }
UserInstaceFactory.java
package com.spring.factory; import java.util.HashMap; import java.util.Map; //实例工厂类 public class UserInstaceFactory { private Map<String,User> users = null; public UserInstaceFactory() { users = new HashMap<String, User>(); users.put("matt", new User("matt","SH")); users.put("joy", new User("joy","SH")); } public User getUser(String name){ return users.get(name); } }
SpringUserFactory.java
package com.spring.factory; import org.springframework.beans.factory.FactoryBean; //继承Spring FactoryBean的实例 public class SpringUserFactory implements FactoryBean<User>{ private String name; public void setName(String name) { this.name = name; } //返回bean的对象 public User getObject() throws Exception { return new User(name,"SH"); } //返回bean的类型 public Class<?> getObjectType() { return User.class; } public boolean isSingleton() { return true; } }
Main.java
package com.spring.factory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { ApplicationContext ext = new ClassPathXmlApplicationContext("factory.xml"); //通过工厂静态方法 User user = (User) ext.getBean("staticFactory"); System.out.println(user); //通过工厂实例方法 User user1 = (User) ext.getBean("user1"); System.out.println(user1); //通过spring factorybean User user2 = (User) ext.getBean("user2"); System.out.println(user2); } }
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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--静态工厂方法配置--> <bean id="staticFactory" class="com.spring.factory.UserStaticFactory" factory-method="getUser"> <constructor-arg value="matt"></constructor-arg> </bean> <!-- 实例工厂方法配置 --> <bean id="instaceFactory" class="com.spring.factory.UserInstaceFactory"></bean> <bean id="user1" factory-bean="instaceFactory" factory-method="getUser"> <constructor-arg value="joy"></constructor-arg> </bean> <!-- 通过继承Spring的factory --> <bean id ="user2" class="com.spring.factory.SpringUserFactory"> <property name="name" value="shire"></property> </bean> </beans>
相关推荐
本篇文章将深入探讨Spring的核心工厂配置源码,以及在Eclipse 3.2和Tomcat 5.0环境下如何进行开发。 首先,我们需要理解Spring中的Bean工厂,它是IoC容器的基础。Bean工厂负责管理对象的生命周期和依赖关系。在...
`refresh()`会重新初始化Bean工厂,读取新的配置信息,并更新所有Bean的状态。请注意,这一步可能会影响到正在运行的Bean,因此设计时要考虑好如何平滑地进行切换,避免数据不一致或异常情况。 最后,在Web容器(如...
在Spring框架中,BeanFactory接口是Spring工厂的核心,它代表了一个容器,可以管理各种Bean的生命周期。当我们配置Spring时,我们定义Bean的元数据,如Bean的类、依赖关系等,这些信息会被Spring解析并存储在Bean...
在Spring框架中,Bean的创建方式多样,其中两种常见的非XML配置方式是通过静态工厂方法和实例工厂方法来创建Bean。这些方法为Spring容器提供了更灵活的Bean实例化策略,让我们深入了解一下这两种方法。 首先,静态...
在Spring配置文件中,我们需要定义一个工厂bean,然后指定该工厂bean的`factory-bean`属性,以及工厂bean中用于创建目标bean的方法,即`factory-method`属性。下面是一个简单的例子: ```xml ``` 在这个...
·调用实例工厂方法创建bean 时,必须将实例工厂配置成bean 实例。 而静态工厂方法则无须配置工厂bean。 ·调用实例工厂方法创建bean 时,必须使用factory-bean 属性来确定工厂bean。 而静态工厂方法则使用...
接下来是Session工厂的配置,我们使用Spring提供的LocalSessionFactoryBean来配置Session工厂。在这个配置中,我们需要指定数据源、映射文件等信息。 然后是Hibernate模板的配置,我们使用Spring提供的...
在Spring配置文件中,我们需要定义一个bean,该bean代表我们要通过工厂方法创建的对象。使用`factory-bean`属性指定工厂bean的ID,`factory-method`属性指定工厂方法的名称。例如: ```xml ``` 在这个例子中,`...
从上述配置可以看出,Spring AOP主要是通过`ProxyFactoryBean`来创建代理对象,通过配置不同的拦截器来实现对目标对象方法的增强。这种配置方式非常灵活,可以根据实际需求动态地添加或修改拦截器,从而实现特定的...
Spring 配置文件是指-guide Spring 工厂进行 Bean 生产、依赖关系注入(装配)及 Bean 实例分发的“图纸”。Java EE 程序员必须学会并灵活应用这份“图纸”准确地表达自己的“生产意图”。Spring 配置文件是一个或多...
总结一下,Spring工厂属性注入的核心知识点包括: 1. `FactoryBean`接口:提供自定义对象创建逻辑。 2. 配置工厂bean:在`applicationContext.xml`中声明工厂bean,并指定工厂方法。 3. 属性注入:工厂bean创建的...
在简单工厂模式中,工厂类负责决定实例化哪个类,客户端通过调用工厂方法获取所需对象,降低了客户端与具体实现类之间的耦合。 **Spring中的IoC与工厂模式对比** 虽然简单工厂模式在某些场景下能有效地创建对象,...
在Spring的配置文件中,我们需要声明这个工厂类,并指定用于创建对象的方法。使用`factory-bean`属性来指定工厂类的bean id,`factory-method`属性指定工厂方法: ```xml ``` 三、实例工厂注入的优势 1. 隐藏...
当一个服务器不可用时,Spring配置的连接工厂会自动尝试连接到Zookeeper中标识的其他复制节点。 以上就是关于“activemq spring 客户端配置”的主要内容。通过这些步骤,你可以构建一个能够在Spring环境中与...
总之,模拟Spring的XML配置文件注入是一个深入了解Spring框架和XML解析的好方法。通过SAXBuilder解析XML,结合反射和Java Bean机制,我们可以手动创建并管理对象的生命周期,实现依赖注入,从而更好地理解Spring的...
- `spring-beans-2.5.6.jar`:提供Bean工厂和依赖注入功能。 - `spring-context-2.5.6.jar`:支持Spring的上下文环境,如事件传播、资源访问等。 - `spring-context-support-2.5.6.jar`:提供对各种数据源的支持。 -...
在这个"spring + redis + sentinel"配置中,我们将探讨如何整合这三个组件以创建一个稳定且高度可用的缓存系统。 首先,`redis.properties`文件是Spring与Redis连接的关键配置文件。在该文件中,通常会包含以下内容...
- `struts.objectFactory = spring` 指定使用Spring作为对象工厂,这样Struts2的Action将被Spring管理。 2. `struts.xml`: 定义Action及其相关的配置,包括Action类、结果页面、拦截器等。例如: - `<package>` ...