spring中bean的新配置方式--工厂方法配置bean
来源:互联网 发布:color for mac 编辑:程序博客网 时间:2024/04/27 14:16
配置bean有三种方式:通过全类名反射,通过工厂方法(静态工厂方法和实例工厂)和FactoryBeanm,今天要讲解的是第二种方式。
一、静态工厂方法
注意事项,这里是用传参数的方式,因此只能传一个参数如果传了两个就错了;先看正确代码
StaticCarFactory.java
package com.atguigu.spring.beans.factory;import java.util.HashMap;import java.util.Map;/* * 静态工厂方法,直接调用类的静态方法就可以返回bean的实例 */public class StaticCarFactory { private static Map<String,Car>cars=new HashMap<String,Car>(); static{ cars.put("audi", new Car("audi",399999)); cars.put("ford", new Car("ford",5555555)); } //静态工厂方法public static Car getCar(String name){ return cars.get(name);}}
beans-factory.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实例 ,下面配置的就是audi--><bean id="car1" class="com.atguigu.spring.beans.factory.StaticCarFactory" factory-method="getCar"><!--下面这段是在配置参数--><constructor-arg value="audi"></constructor-arg></bean></beans>
Car.java
package com.atguigu.spring.beans.factory;public class Car { public Car(){ System.out.println("Car's 无参构造函数......."); } private String brand; private int price; public int getPrice() { return price; } @Override public String toString() { return "Car [brand=" + brand + ", price=" + price + "]"; } public void setPrice(int price) { this.price = price; } public Car(String brand, int price) { super(); this.brand = brand; this.price = price; } public String getBrand() { System.out.println("setBrand方法"); return brand; } public void setBrand(String brand) { System.out.println("setBrand方法。。。。。"); this.brand = brand; } public void init(){ System.out.println("初始化方法。。。。"); } public void destroy(){ System.out.println("销毁方法。。。。"); }}
以上就是静态工厂方法配置bean。
<?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实例 ,下面配置的就是audi--><!-- class属性:指向工厂方法的全类名; factory-method:指向静态工厂方法的名字; constructor-arg:如果工厂方法需要传入参数,则使用静态参数来入 --><bean id="car1" class="com.atguigu.spring.beans.factory.StaticCarFactory" factory-method="getCar"><!--下面这段是在配置参数--><constructor-arg value="audi"></constructor-arg></bean></beans>
重点是上面的配置文件。
二、实例工厂方法
beans-factory.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实例 ,下面配置的就是audi--><!-- class属性:指向工厂方法的全类名; factory-method:指向静态工厂方法的名字; constructor-arg:如果工厂方法需要传入参数,则使用静态参数来入 --><bean id="car1" class="com.atguigu.spring.beans.factory.StaticCarFactory" factory-method="getCar"><!--下面这段是在配置参数--><constructor-arg value="audi"></constructor-arg></bean><!-- 配置工厂实例 --><!-- factory-bean属性:指向实例工厂的bean; factory-method:指向静态工厂方法的名字; constructor-arg:如果工厂方法需要传入参数,则使用静态参数来入 --><bean id="carfactory" class="com.atguigu.spring.beans.factory.InstanceCarFactory"></bean><!--通过实例工厂来配置bean--><bean id="car2" factory-bean="carfactory" factory-method="getCar"><constructor-arg value="ford"></constructor-arg></bean></beans>
InstanceCarFactory.java(实例工厂对应的类,里对应获取bean的方法)
package com.atguigu.spring.beans.factory;import java.util.HashMap;import java.util.Map;//实例工厂方法,需要先创建工厂本身,然后调用工厂方法来返回bean的实例public class InstanceCarFactory { private static Map<String,Car>cars=null; public InstanceCarFactory(){ cars=new HashMap<String,Car>(); cars.put("audi", new Car("audi",399999)); cars.put("ford", new Car("ford",5555555)); } public Car getCar(String name){ return cars.get(name);}}
0 0
- spring中bean的新配置方式--工厂方法配置bean
- spring中通过工厂方法配置Bean
- Spring中通过工厂方法配置bean
- spring 工厂方法配置bean
- Spring -- spEL&Bean的生命周期&工厂方法配置Bean
- Spring中工厂Bean的配置
- spring配置工厂bean
- spring中bean配置的常用方式
- spring(12) Spring的通过工厂方法配置Bean
- Spring使用工厂模式配置bean的三种方式
- Spring配置bean的方法(工厂方法和Factorybean)
- Spring配置bean的方法(工厂方法和Factorybean)
- spring 通过工厂方法配置Bean
- Spring-10:通过工厂方法配置Bean
- Spring通过工厂方法配置Bean
- 【Spring】使用工厂方法配置Bean
- Spring通过工厂方法配置bean
- Spring通过工厂方法配置bean
- linux下使用pcre库进行正则表达式
- poj-1703-Find them, Catch them【并查集】
- 介绍四大接口及其实现类。
- powershell递归删除文件
- 基于时分复用的MAC协议
- spring中bean的新配置方式--工厂方法配置bean
- 康托展开
- Unity敏感词屏蔽
- 0926
- C# 插入排序
- Wewe带你看代码 --USACO Section1.1
- window.open()
- 网易笔试题:跳石板
- Android视频学习(二):数据存储与界面展示2