Spring学习记录--IOC(2)

希望年后可以找到工作(= ——=)

IOC–Bean

配置管理Bean的时候需要注意:

 <bean name="dateFactory" class="Factory.MySimpleFactory" ></bean>

以上格式默认采用默认无参构造方法生成Bean,若配置有其他构造方法,且没有写无参构造方法,则创建Bean失败,运行时加载xml配置阶段报错。

如:需要用自定义构造函数,写法如下

public class Person {
    String name;
    int age;
    List<String> hobby;
    Map<String,List<String>> map;
//    public Entity.Person(){
//
//    }

    public Person(){

    }

    public Person(String _name,int _age){
        name=_name;
        age=_age;
    }
    public Person(String _name,int _age,Map<String,String[]> _map){
        name=_name;
        age=_age;
    }
    public Person(String _name,int _age,List<String> _hobby){
        name=_name;
        age=_age;
        hobby=_hobby;
    }


    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setHobby(List<String> hobby) {
        this.hobby = hobby;
    }

    public void setMap(Map<String, List<String>> map) {
        this.map = map;
    }

    public void say(){
        System.out.println("hello");
    }
    public void sayName(){
        System.out.println("my name is "+name);
    }

    public void sayHobby(){
        System.out.println(hobby);
    }

    public void OpenMap(String a){
        System.out.println(map.get(a));
    }

    public void init(){
        System.out.println("after init "+name);
    }

    private void PreDestory(){
        System.out.println("before destory "+name);
    }
}
<bean name="iocBean1" class="Entity.Person">
                <constructor-arg name="_age" value="10"></constructor-arg>
                <constructor-arg name="_name" value="wuyifan"></constructor-arg>
                <constructor-arg name="_hobby">
                        <list>
                                <value>吃饭</value>
                                <value>打游戏</value>
                                <value>补番</value>
                        </list>
                </constructor-arg>
                <property name="map">
                        <map>
                                <entry key="taobao">
                                        <list>
                                                <value>淘宝</value>
                                                <value>淘宝</value>
                                        </list>
                                </entry>
                        </map>
                </property>
        </bean>

上方Person类的无参构造函数被注释掉了,此时根据想使用的构造函数的参数配置Bean的相关参数
如下:

<bean name="iocBean1" class="Entity.Person">
                <constructor-arg name="_age" value="10"></constructor-arg>
                <constructor-arg name="_name" value="wuyifan"></constructor-arg>
</bean>

配置方式

1.通过参数名配置参数

<constructor-arg name="_age" value="10"></constructor-arg>`

2.通过参数位置,起始为0

<constructor-arg index="0" value="10"></constructor-arg>

注意事项:参数为集合类型(Object[] , List<?>,set)时,参数使用标签

<constructor-arg index="0" >
	 <list>
                                <value>吃饭</value>
                                <value>打游戏</value>
                                <value>补番</value>
     </list>
</constructor-arg>

参数为其他Bean时(Date、HashMap、自定义类型……)

<constructor-arg name="_age" ref="BeanId"></constructor-arg>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值