# 4初始化IoC容器

回到spring导航页

IoC容器管理bean有三种方式

  • 基于XML管理Bean
  • 基于注解配置Bean
  • 基于Java代码配置Bean

# XML管理对象(bean)

<!--什么属性都不写,默认调用的是空构造函数-->
    <bean id="appleA" class="com.torey.spring.ioc.entity.Apple">
    </bean>
1
2
3

实例化Bean的三种方式

  • 基于构造方法对象实例化
  • 基于静态工厂实例化
  • 基于工厂实例方法实例化

在实际项目中,有90%是基于构造方法对象实例化

# 利用构造方法

# 利用构造方法参数名实例化

<bean id="appleB" class="com.torey.spring.ioc.entity.Apple">
        <!--没有constructor-arg 则代表调用默认构造方法实例化-->
        <constructor-arg name="color" value="黄色"></constructor-arg>
        <constructor-arg name="origin" value="中国"></constructor-arg>
        <constructor-arg name="title" value="金帅"></constructor-arg>
    </bean>
1
2
3
4
5
6

# 利用构造方法index实例化-实际一般不采用

<bean id="apple3" class="com.torey.spring.ioc.entity.Apple">
        <!--这种方式一般不用-->
        <constructor-arg index="0" value="黄色1"></constructor-arg>
        <constructor-arg index="1" value="中国1"></constructor-arg>
        <constructor-arg index="2" value="金帅1"></constructor-arg>
    </bean>
1
2
3
4
5
6

# 基于静态工厂实例化

package com.torey.spring.ioc.factory;

import com.torey.spring.ioc.entity.Apple;

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--利用静态方法获取对象-->
<bean id="apple4" class="com.torey.spring.ioc.factory.AppleStaticFactory" factory-method="createSweetApple"></bean>
1
2

# 基于工厂实例方法实例化

package com.torey.spring.ioc.factory;

import com.torey.spring.ioc.entity.Apple;

/**
 * 工厂实例方法创建对象是指IoC容器对工厂类进行实例化并调用对应的实例方法创建对象的过程
 */
public class AppleInstanceFactory {
    public Apple createSweetApple(){
        System.out.println(this.getClass().getName());
        Apple apple=new Apple();
            apple.setColor("红色");
            apple.setOrigin("欧洲");
            apple.setTitle("红富士");
            return apple;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!--利用工厂实例方法获取对象,需要创建两个bean -->
    <bean id="appleInstanceFactory" class="com.torey.spring.ioc.factory.AppleInstanceFactory"></bean>
    <bean id="apple5" factory-bean="appleInstanceFactory" factory-method="createSweetApple"></bean>
1
2
3

# 导航,上一页,下一页

3SpringIoc初体验
5IoC中获取bean

# 支持我-微信扫一扫-加入微信公众号

Aseven公众号

# 赞赏作者

赞赏作者