Spring的几种注入方式

通过set方式注入

bean的定义:

package com.ydoing.demo;
public class Person {
    private Computer computer;
    public void setComputer(Computer computer) {
        this.computer = computer;
    }
    public void useComputer() {
        computer.start();
    }
} 

bean的配置:

    <bean id="person" class="com.ydoing.demo.Person">
        <property name="computer" ref="computer" />
    </bean> 

通过构造器注入

注入基本类型

bean的定义:

package com.ydoing.demo;
public class CPU {
    private String name;
    public CPU(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
}

bean的配置:

    <bean id="cpu" class="com.ydoing.demo.CPU">
        <constructor-arg value="Intel"/>
    </bean> 

注入对象引用

package com.ydoing.demo;
public class Computer {
    private String name;
    private CPU cpu;
    public Computer(String name, CPU cpu) {
        this.name = name;
        this.cpu = cpu;
    }
    public void start() {
        System.out.println(name + "computer run");
        System.out.println("CPU name is: " + cpu.getName());
    }
} 

bean的配置

    <bean id="computer" class="com.ydoing.demo.Computer">
        <constructor-arg value="Del"/>
        <constructor-arg ref="cpu"/>
    </bean> 

通过工厂方法

适合私有构造器以及没有set方法的bean。

package com.ydoing.demo;
public class Singleton {
    private Singleton() {
    }
    private static class SingletonHolder {
        static final Singleton instance = new Singleton();
    }
    public static final Singleton getInstance() {
        return SingletonHolder.instance;
    }
}

bean的配置

    <bean id="singleton" class="com.ydoing.demo.Singleton" factory-method="getInstance"/> 

装配集合

list

        <property name="memorys">
            <list>
                <ref bean="Kingston" />
                <ref bean="Apacer" />
            </list>
        </property> 

或者

        <property name="memorys">
            <list>
                <value>1</value>
                <value>2</value>
            </list>
        </property> 

set

        <property name="memorys">
            <set>
                <ref bean="Kingston" />
                <ref bean="Apacer" />
            </set>
        </property> 

map

        <property name="memorys">
            <map>
                <entry key="key1" value="11"/>
                <entry key="key2" value="22"/>
            </map>
        </property> 

或者

        <property name="memorys">
            <map>
                <entry key-ref="key1" value-ref="bean1"/>
                <entry key-ref="key2" value-ref="bean2"/>
            </map>
        </property> 

props

props的key和value必须是String类型。

        <property name="memorys">
            <props>
                <key>OK</key>
                <key>No</key>
            </props>
        </property> 
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值