(二)Spring XML 配置 之Bean 配置
2016-02-26 15:04
615 查看
Spring 中配置Bean 的方式大的分为两种,基于XML 的配置方式 和 基于注解的配置方式。 而基于XML 的配置方式又分为以下几种:
1. 全类名配置方式:此种方式很常用
2. 静态工厂方式:常用于静态工厂模式,或者框架整合
3. 实例工厂方式:常用于实例工厂模式,或者框架整合
4.FactoryBean方式:常用于框架整合
【1. 全类名配置】
【2. 静态工厂配置】
静态工厂配置bean,无需配置工厂实例,直接在class 属性中指定即可,注意方法必须为静态方法
静态工厂类ComputerFactory
【3. 实例工厂配置】
实例工厂配置bean,首先需要配置工厂实例, 然后再配置bean, 注意工厂中的方法必须为非静态方法
实例工厂
【4. FactoryBean配置】
FactoryBean 配置方式,必须实现Spring 的FactoryBean接口,并重写相应的方法。
实现FactoryBean接口的工厂类
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; } }
相关文章推荐
- java.lang.NoClassDefFoundError: org/hibernate/Session
- Spring的基本用法
- spring中的context:include-filter和context:exclude-filter的区别
- (一)Spring 简介
- 关于Dragger2与RXjava集合框架的项目随笔
- spring整合quartz任务调度框架使用
- Java中的Timer源码分析及缺陷
- window下在同一台机器上安装多个版本jdk,修改环境变量不生效问题处理办法[转]
- MAC地址,使用java获取IP地址和MAC地址。
- java设计模式(三)--抽象工厂模式
- 如何使用intelij IDEA 显示一个类的所有方法?与eclipse的outline视图类似
- JAVA线程池
- Java操作Ant压缩和解压文件及批量打包Anroid应用
- Spring-05-整合Struts2
- java enum(枚举)使用详解 + 总结
- Spring中的@Scheduled
- java Web单点登录(SSO)原理及简单实现
- 回归到java开发,先从javase基础开始
- java匿名类没有函数名的花括号
- Java中关于OOM的场景及解决方法(顶)