静态工厂:
UserFactory.java
package com.yikuan.factory; import com.yikuan.vo.User; public class UserFactory { public static User fangfa(String name){ return new User(name); } }
beans.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就是java对象,由spring容器来创建和管理 --> <bean id="user" class="com.yikuan.factory.UserFactory" factory-method="fangfa"> <constructor-arg index="0" value="孙六"></constructor-arg> </bean> </beans>
动态工厂:
UserDynamicFactory.java
package com.yikuan.factory; import com.yikuan.vo.User; public class UserDynamicFactory { public User fangfa(String name){ return new User(name); } }
beans.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就是java对象,由spring容器来创建和管理 --> <bean id="userFactory" class="com.yikuan.factory.UserDynamicFactory"></bean> <bean id="user" factory-bean="userFactory" factory-method="fangfa"> <constructor-arg index="0" value="孙六"></constructor-arg> </bean> </beans>
以下是公共的代码
User.java
package com.yikuan.vo; public class User { private String name; public User() { System.out.println("user的无参构造方法!"); } public User(String name) { super(); this.name = name; } public void show(){ System.out.println("name:"+name); } }
Test1.java
package com.yikuan.test; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.yikuan.vo.User; public class Test1 { public static void main(String[] args) { ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml"); User user = (User) ac.getBean("user"); user.show(); } }