营销创意网站,如何做国际贸易网站,专业定制网咖装修效果图,给网站做文章目录 通过构造方法实例化通过简单工厂模式实例化通过factory-bean实例化BeanFactory和FactoryBean的区别BeanFactoryFactoryBean 注入自定义Date Spring为Bean提供了多种实例化方式#xff0c;通常包括4种方式。#xff08;也就是说在Spring中为Bean对象的创建准备了很多… 文章目录 通过构造方法实例化通过简单工厂模式实例化通过factory-bean实例化BeanFactory和FactoryBean的区别BeanFactoryFactoryBean 注入自定义Date Spring为Bean提供了多种实例化方式通常包括4种方式。也就是说在Spring中为Bean对象的创建准备了很多种方案目的是更加灵活 第一种通过构造方法实例化第二种通过简单工厂模式实例化第三种通过factory-bean实例化第四种通过FactoryBean接口实例化
通过构造方法实例化
默认情况下会调用Bean的无参数构造
//User
package com.powernode.spring6.bean;public class User {public User() {System.out.println(User类的无参数构造方法执行。);}
}!-- spring.xml --
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdbean iduserBean classcom.powernode.spring6.bean.User//beans//test
Test
public void testConstructor(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring.xml);User user applicationContext.getBean(userBean, User.class);System.out.println(user);
}通过简单工厂模式实例化
定义一个Bean
package com.powernode.spring6.bean;public class Vip {
}编写简单工厂模式当中的工厂类
package com.powernode.spring6.bean;public class VipFactory {public static Vip get(){return new Vip();}
}在Spring配置文件中指定创建该Bean的方法使用factory-method属性指定
bean idvipBean classcom.powernode.spring6.bean.VipFactory factory-methodget/编写测试程序
Test
public void testSimpleFactory(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring.xml);Vip vip applicationContext.getBean(vipBean, Vip.class);System.out.println(vip);
}通过factory-bean实例化
本质上是通过工厂方法模式进行实例化
定义一个Bean
package com.powernode.spring6.bean;public class Order {
}定义具体工厂类工厂类中定义实例方法
package com.powernode.spring6.bean;public class OrderFactory {public Order get(){return new Order();}
}在Spring配置文件中指定factory-bean以及factory-method
bean idorderFactory classcom.powernode.spring6.bean.OrderFactory/
bean idorderBean factory-beanorderFactory factory-methodget/test
Test
public void testSelfFactoryBean(){ApplicationContext applicationContext new ClassPathXmlApplicationContext(spring.xml);Order orderBean applicationContext.getBean(orderBean, Order.class);System.out.println(orderBean);
}FactoryBean在Spring中是一个接口被称为“工厂Bean”。“工厂Bean”是一种特殊的Bean。所有的“工厂Bean”都是用来协助Spring框架来创建其他Bean对象的。 BeanFactory和FactoryBean的区别
BeanFactory
Spring IoC容器的顶级对象BeanFactory被翻译为“Bean工厂”在Spring的IoC容器中“Bean工厂”负责创建Bean对象。
BeanFactory是工厂。
FactoryBean
FactoryBean它是一个Bean是一个能够辅助Spring实例化其他Bean对象的一个Bean。 他是一个Bean 在Spring中Bean可以分为两类
第一类普通Bean第二类工厂Bean 工厂Bean也是一种Bean只不过这种Bean比较特殊它可以辅助Spring实例化其他Bean对象。 注入自定义Date
众所周知 Date作为简单类用起来不简单必须要规范那个b格式其他格式是不会被识别的。
这种情况下我们就可以使用FactoryBean来完成这个骚操作 编写DateFactoryBean实现FactoryBean接口
package com.powernode.spring6.bean;import org.springframework.beans.factory.FactoryBean;import java.text.SimpleDateFormat;
import java.util.Date;public class DateFactoryBean implements FactoryBeanDate {// 定义属性接收日期字符串private String date;// 通过构造方法给日期字符串属性赋值public DateFactoryBean(String date) {this.date date;}Overridepublic Date getObject() throws Exception {SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd);return sdf.parse(this.date);}Overridepublic Class? getObjectType() {return null;}
}编写spring配置文件
bean iddateBean classcom.powernode.spring6.bean.DateFactoryBeanconstructor-arg namedate value1999-10-11/
/beanbean idstudentBean classcom.powernode.spring6.bean.Studentproperty namebirth refdateBean/
/bean