您的位置:首页 > 编程语言 > Java开发

(二)Spring XML 配置 之Bean 配置

2016-02-26 15:04 615 查看
Spring 中配置Bean 的方式大的分为两种,基于XML 的配置方式 和 基于注解的配置方式。 而基于XML 的配置方式又分为以下几种:

1. 全类名配置方式:此种方式很常用

2. 静态工厂方式:常用于静态工厂模式,或者框架整合

3. 实例工厂方式:常用于实例工厂模式,或者框架整合

4.FactoryBean方式:常用于框架整合

【1. 全类名配置】

<!-- id:Bean 对象在Spring 容器中的唯一标识    class:该对象所属类的全路径名   -->
<bean id="computerBean" class="org.zgf.spring.ioc.bean.ComputerBean"></bean>


【2. 静态工厂配置】

静态工厂配置bean,无需配置工厂实例,直接在class 属性中指定即可,注意方法必须为静态方法

<!-- 静态方法配置Bean
class: 静态工厂类的全路径名称
factory-method: 静态工厂中的创建该实例的方法
<constructor-arg>: 配置方法的参数
-->
<bean id="computerStaticFactoryBean" class="org.zgf.spring.ioc.bean.ComputerFactory" factory-method="ComputerStaticFactory">
<constructor-arg name="brand" value="lenovo"/>
<constructor-arg name="type" value="Y470"/>
</bean>


静态工厂类ComputerFactory

/** 静态工厂类   */
public class ComputerStaticFactory {

/** 通过品牌 和 型号 创建 电脑对象 , 静态方法*/
public static  ComputerBean createComputer(String brand, String type){
return new ComputerBean(brand, type);
}
}


【3. 实例工厂配置】

实例工厂配置bean,首先需要配置工厂实例, 然后再配置bean, 注意工厂中的方法必须为非静态方法

<!-- 3. 实例工厂方法配置 bean -->
<!-- 工厂方法配置Bean: 配置工厂实例 -->
<bean id="computerInstanceFactory" class="org.zgf.spring.ioc.bean.ComputerInstanceFactory"/>

<!-- 实例工厂方法配置Bean: 配置Bean实例   factory-bean:指向配置的工厂bean id-->
<bean id="computerInstanceFactoryBean" factory-bean="computerInstanceFactory" factory-method="createComputer">
<constructor-arg name="brand" value="lenovo"/>
<constructor-arg name="type" value="Y470"/>
</bean>


实例工厂

/** 静态工厂类   */
public class ComputerInstanceFactory {

/** 通过品牌 和 型号 创建 电脑对象 , 非静态方法*/
public  ComputerBean createComputer(String brand, String type){
return new ComputerBean(brand, type);
}
}


【4. FactoryBean配置】

FactoryBean 配置方式,必须实现Spring 的FactoryBean接口,并重写相应的方法。

<!-- 4. FactoryBean 方式配置Bean class:实现FactoryBean接口的工厂类-->
<bean id="computerFactoryBean" class="org.zgf.spring.ioc.bean.ComputerFactoryBean">
<constructor-arg name="brand" value="lenovo"/>
<constructor-arg name="type" value="Y470"/>
</bean>


实现FactoryBean接口的工厂类

package org.zgf.spring.ioc.bean;

import org.springframework.beans.factory.FactoryBean;

/**
* 必须实现FactoryBean接口,及其方法
*
*/
public class ComputerFactoryBean implements FactoryBean<ComputerBean>{

private String brand;

private String type;

public ComputerFactoryBean( String brand, String type) {
super();
this.brand = brand;
this.type = type;
}

/** 返回bean 实例 */
@Override
public ComputerBean getObject() throws Exception {
return new ComputerBean(brand, type);
}

/** Bean 的类型  */
@Override
public Class<?> getObjectType() {
return ComputerBean.class;
}

/** 是否是单例的   */
@Override
public boolean isSingleton() {
return true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: