欢迎使用CSDN-markdown编辑器

来源:互联网 发布:淘宝网拖鞋带后跟 编辑:程序博客网 时间:2024/04/29 01:21

Bean 的常见几种实例化方式

刚学完bean的几种常见的实例化方式,感觉以后要使用的话会被遗忘,索性就总结一下,以后要是用到新的方式,还会再追加。

  • 第一种:默认无参数构造器进行初始化
  • 第二种:静态工厂进行初始化
  • 第三种:实例工厂进行初始化
  • 第四种:实现FactoryBean接口进行初始化

第一种:默认无参数构造器进行初始化

-我们先创建一个Bean1类

package com.yyk.definationBean;/** *  * @author Administrator * 对于bean1 * 我们采用第一种实例化bean的方式:默认无参数构造器进行初始化 */public class Bean1 {    //默认会有一个无参构造器 所以才不会报错    public void getBean(){        System.out.println("Bean1==========getBean()");    }    /**      测试1  如果我们加一个有参数的构造器 ,测试结果会报错        public Bean1(int n){}    测试2  如果存在一个无参的 一个有参的 构造器  则不会报错        public Bean1(int n){}        public Bean1(){}    */}

-在配置文件中进行配置:

<?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 id="bean1" class="com.yyk.definationBean.Bean1"/>

-在测试程序中进行调用

@Test    public void testDefination() {        //获取工厂        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(                "applicationContext.xml");        Bean1 bean1 = (Bean1) applicationContext.getBean("bean1");        bean1.getBean();        System.out.println(bean1);//获取bean1对象

第二种:静态工厂进行初始化

-我们先创建一个Bean2类

package com.yyk.definationBean;/** *  * @author Administrator * 对于bean2 * 我们通过静态工厂方法进行实例化bean, 我们要建立一个静态工厂类 */public class Bean2 {}

-创建一个静态工厂类:

package com.yyk.definationBean;/*  bean2的工厂类    实际中静态工厂的使用是 拿别人做好的静态工厂 我们调用其中的一些方法  就可以使用    然后进行 静态工厂的配置*/public class Bean2Factory {    //静态方法    public static Bean2 initBean2(){        System.out.println("静态工厂方法==============");        return new Bean2();//返回的对象可以是任意    }}

-在配置文件中进行配置:

<?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 id="bean2" class="com.yyk.definationBean.Bean2Factory" factory-method="initBean2"/>

-在测试程序中进行调用

@Test    public void testDefination() {        //获取工厂        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(                "applicationContext.xml");        //通过调用静态工厂的方式进行        Bean2 bean2 = (Bean2) applicationContext.getBean("bean2");        System.out.println(bean2);//获取bean2对象

第三种:实例工厂进行初始化

-我们先创建一个Bean3类

package com.yyk.definationBean;/** *  * @author Administrator * 对于bean3 * 用实例工厂进行实例化bean */public class Bean3 {}

-Bean3的实例化工厂

package com.yyk.definationBean;//实例工厂方法//显示中使用别人的工厂的时候进行调用  然后进行配置public class Bean3Factory {    public Bean3 createBean3(){        return new Bean3();    }}

-在配置文件中进行配置:

<?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 id="bean3Factory" class="com.yyk.definationBean.Bean3Factory"/>     <bean id="bean3" factory-bean="bean3Factory" factory-method="createBean3"/>

-在测试程序中进行调用

@Test    public void testDefination() {        //获取工厂        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(                "applicationContext.xml");        //通过实例工厂方法进行        Bean3 bean3 = (Bean3) applicationContext.getBean("bean3");        System.out.println(bean3);//获取bean3对象

第四种:实现FactoryBean接口进行初始化

-我们先创建一个自定义工厂bean类

package com.yyk.definationBean;import org.springframework.beans.factory.FactoryBean;/**第四种 利用FactoryBean 进行实例化Bean * 自定义工厂Bean 需要实现一个接口  *  实现方法  之后进行配置 */public class MyFactoryBean implements FactoryBean<Bean3> {    //返回目标对象的方法    @Override    public Bean3 getObject() throws Exception {        System.out.println("这是一个工厂bean========");        return new Bean3();    }    @Override    public Class<?> getObjectType() {        // TODO Auto-generated method stub        return null;    }    @Override    public boolean isSingleton() {        // TODO Auto-generated method stub        return false;    }}

-在配置文件中进行配置:

<?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"> <!-- 第四种 利用FactoryBean进行 -->     <bean id="bean3_2" class="com.yyk.definationBean.MyFactoryBean"/>

-在测试程序中进行调用

@Test    public void testDefination() {        //获取工厂        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(                "applicationContext.xml");        //通过实现FactoryBean方法进行        System.out.println(applicationContext.getBean("bean3_2"));

除此之外,还可以使用bean的注解进行实例化bean。

0 0
原创粉丝点击