13、(知识篇)Spring使用xml配置bean02

来源:互联网 发布:淘宝汉服商家那家正规 编辑:程序博客网 时间:2024/06/05 11:52
//1、通過靜態工廠方法配置bean
//在配置bean中使用factory-method 指定靜態方法,返回指定的bean(用constructor-arg指定參數)

//<bean id="factorystatic" class="com.spring.bean.FactoryStatic" factory-method="getPerson">


//2、用實例工廠方法配置bean
//2.1首先配置工廠bean<bean id="factoryinstance" class="com.spring.bean.FactoryInstance"></bean>
//2.2創建bean 通過factory-bean指定工廠、通過factory-method指定工廠方法(用constructor-arg指定參數)
//<bean id="person" factory-bean="factoryinstance" factory-method="getPerson">


//3、通過FactoryBean返回Bean
//衹需要繼承類FactoryBean即可

//测试类

package com.spring.text;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.spring.bean.Person;public class Test {public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");//1、通過靜態工廠方法配置bean//在配置bean中使用factory-method 指定靜態方法,返回指定的bean(用constructor-arg指定參數)//<bean id="factorystatic" class="com.spring.bean.FactoryStatic" factory-method="getPerson">Person person = (Person) ctx.getBean("factorystatic");System.out.println(person);//2、用實例工廠方法配置bean//2.1首先配置工廠bean<bean id="factoryinstance" class="com.spring.bean.FactoryInstance"></bean>//2.2創建bean 通過factory-bean指定工廠、通過factory-method指定工廠方法(用constructor-arg指定參數)//<bean id="person" factory-bean="factoryinstance" factory-method="getPerson">Person person2 = (Person) ctx.getBean("person");System.out.println(person2);//3、通過FactoryBean返回Bean//衹需要繼承類FactoryBean即可Person person3 = (Person) ctx.getBean("factoryPerson");System.out.println(person3);}}

Bean部分:

Person类

package com.spring.bean;public class Person {private String name;private int age;public Person() {super();// TODO Auto-generated constructor stub}public Person(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}}

静态工厂模式获取bean类

package com.spring.bean;import java.util.HashMap;import java.util.Map;public class FactoryStatic {private static Map<Integer, Person> persons = new HashMap<>();static {persons.put(1, new Person("超人", 20));persons.put(2, new Person("綠燈俠", 23));persons.put(3, new Person("閃電俠", 18));}public static Person getPerson(int index) {return persons.get(index);}}


实例工厂获取bean类

package com.spring.bean;import java.util.HashMap;import java.util.Map;public class FactoryInstance {private static Map<Integer, Person> persons = new HashMap<>();public FactoryInstance() {super();// TODO Auto-generated constructor stubpersons.put(1, new Person("超人", 20));persons.put(2, new Person("綠燈俠", 23));persons.put(3, new Person("閃電俠", 18));}public Person getPerson(int index) {return persons.get(index);}}



通过Spring的FactoryBean获取bean类:
package com.spring.bean;import org.springframework.beans.factory.FactoryBean;public class FactoryPerson implements FactoryBean<Person> {@Overridepublic Person getObject() throws Exception {// TODO Auto-generated method stubreturn new Person("超人",20);}@Overridepublic Class<?> getObjectType() {// TODO Auto-generated method stubreturn Person.class;}@Overridepublic boolean isSingleton() {// TODO Auto-generated method stubreturn false;}}

applicationContext.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 --><bean id="factorystatic" class="com.spring.bean.FactoryStatic" factory-method="getPerson"><constructor-arg name="index" value="2"></constructor-arg></bean><!-- 通過實例工廠獲取bean --><bean id="factoryinstance" class="com.spring.bean.FactoryInstance"></bean><bean id="person" factory-bean="factoryinstance" factory-method="getPerson"><constructor-arg name="index" value="3"></constructor-arg></bean><!-- 通過FactoryBean獲取bean --><bean id="factoryPerson" class="com.spring.bean.FactoryPerson"></bean></beans>


0 0
原创粉丝点击