4.XML中实例化Bean的配置方式

基于构造方法实例化对象

 如果<bean>中不写任何配置信息,则调用无参构造实例化对象

复制代码
<bean id="apple2" class="com.example.s02.ioc.entity.Apple">
        <constructor-arg name="title" value="红富士"></constructor-arg>
        <constructor-arg name="color" value="红色"></constructor-arg>
        <constructor-arg name="origin" value="欧洲"></constructor-arg>
        <constructor-arg name="price" value="18.5"></constructor-arg>
    </bean>

    <bean id="apple3" class="com.example.s02.ioc.entity.Apple">
        <constructor-arg index="0" value="红富士"></constructor-arg>
        <constructor-arg index="1" value="红色"></constructor-arg>
        <constructor-arg index="2" value="欧洲"></constructor-arg>
        <constructor-arg index="3" value="18.5"></constructor-arg>
    </bean>
复制代码

 

复制代码
public class Apple {
    private String title;
    private String color;
    private String origin;
    private Float price;
    public Apple() {
        System.out.println("Apple对象已创建," + this);
    }

    public Apple(String title, String color, String origin) {
        System.out.println("通过带参构造方法创建对象" + this);
        this.title = title;
        this.color = color;
        this.origin = origin;
    }

    public Apple(String title, String color, String origin,Float price) {
        System.out.println("通过带参构造方法创建对象" + this);
        this.title = title;
        this.color = color;
        this.origin = origin;
        this.price = price;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getOrigin() {
        return origin;
    }

    public void setOrigin(String origin) {
        this.origin = origin;
    }
}
复制代码

2.利用静态工厂获取对象

    <!--利用静态工厂获取对象-->
    <bean id="apple4" class="com.example.s02.ioc.Factory.AppleStaticFactory"
          factory-method="createSweetApple"/>

 

复制代码
package com.example.s02.ioc.Factory;

import com.example.s02.ioc.entity.Apple;

/**
 * 静态工厂通过静态方法创建对象,隐藏创建对象的细节
 */
public class AppleStaticFactory {
    public static Apple createSweetApple() {
        //logger.info("");
        Apple apple = new Apple();
        apple.setTitle("红富士");
        apple.setOrigin("欧洲");
        apple.setColor("红色");
        return apple;
    }
}
复制代码

3.基于工厂实例方法实例化对象

    <!--利用工厂实例方法获取对象-->
    <bean id="factoryInstance" class="com.example.s02.ioc.Factory.AppleFactoryInstance"/>
    <bean id="apple5" factory-bean="factoryInstance" factory-method="createSweetApple"/>
复制代码
package com.example.s02.ioc.Factory;

import com.example.s02.ioc.entity.Apple;

/**
 * 工厂实例方法创建对象是指IoC容器对工厂类进行实例化并调用对应的方法创建对象的过程
 */
public class AppleFactoryInstance {
    public Apple createSweetApple(){
        Apple apple = new Apple();
        apple.setTitle("红富士");
        apple.setOrigin("欧洲");
        apple.setColor("红色");
        return apple;
    }
}
复制代码

 

posted @   南风知君  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示