设为首页 加入收藏

TOP

day04-Spring管理Bean-IOC-02(一)
2023-07-25 21:42:13 】 浏览:67
Tags:day04-Spring 管理 Bean-IOC-02

Spring管理Bean-IOC-02

2.基于XML配置bean

2.7通过util空间名称创建list

BookStore.java

package com.li.bean;

import java.util.List;

/**
 * @author 李
 * @version 1.0
 */
public class BookStore {
    private List<String> bookList;

    //如果类中没有其他构造器,默认构造器可以不写
    // 如果有其他构造器,则必须显示定义无参构造器
    public BookStore() {
    }

    public List<String> getBookList() {
        return bookList;
    }

    public void setBookList(List<String> bookList) {
        this.bookList = bookList;
    }

    @Override
    public String toString() {
        return "BookStore{" +
                "bookList=" + bookList +
                '}';
    }
}

如果有多个BookStore对象,list的内容都一样,按照之前的做法,每一个list都要写上相同的value值。但使用util命名空间可以达到数据复用的效果:

beans.xml:

<!--定义util:list,并指定id,可以达到数据复用的效果-->
<util:list id="myBookList">
    <value>三国演义</value>
    <value>红楼梦</value>
    <value>西游记</value>
    <value>水浒传</value>
</util:list>

<!--配置BookStores对象-->
<bean class="com.li.bean.BookStore" id="bookStore">
    <property name="bookList" ref="myBookList"/>
</bean>

注意引入util命名空间:

image-20230117163203971

测试类:

//使用util:list名称空间给属性赋值
@Test
public void setBeanByUtilList() {
    ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");
    BookStore bookStore = ioc.getBean("bookStore", BookStore.class);
    System.out.println("bookStore=" + bookStore);
}
image-20230117163450336

2.8级联属性赋值

  1. 案例说明:spring的ioc容器,可以直接给对象属性的属性赋值,即级联属性赋值

  2. 完成步骤:

    (1)创建Dept.java和Emp.java

    (2)配置beans.xml


Dept.java:

package com.li.bean;

/**
 * @author 李
 * @version 1.0
 * 部门类
 */
public class Dept {
    private String name;

    public Dept() {
    }

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "Dept{" +
                "name='" + name + '\'' +
                '}';
    }
}

Emp.java:

package com.li.bean;

/**
 * @author 李
 * @version 1.0
 * 员工类
 */
public class Emp {
    private String name;
    private Dept dept;

    public Emp() {
    }

    public String getName() {
        return name;
    }

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

    public Dept getDept() {
        return dept;
    }

    public void setDept(Dept dept) {
        this.dept = dept;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "name='" + name + '\'' +
                ", dept=" + dept +
                '}';
    }
}

beans.xml:

<!--配置Dept对象-->
<bean class="com.li.bean.Dept" id="dept"/>
<!--配置Emp对象-->
<bean class="com.li.bean.Emp" id="emp">
    <property name="name" value="jack"/>
    <property name="dept" ref="dept"/>
    <!--这里我希望给dept的name属性赋值[级联属性赋值]-->
    <property name="dept.name" value="Java开发部门"/>
</bean>

测试类:

//使用级联赋值给属性的属性赋值
@Test
public void setBeanByRelation() {
    ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");
    Emp emp = ioc.getBean("emp", Emp.class);
    System.out.println("emp=" + emp);
}
image-20230117165625876

2.9通过静态工厂获取对象

  1. 在spring的ioc容器,可以通过静态工厂获取bean对象

  2. 完成步骤:

    (1)静态工厂类MyStaticFactory类和Monster类

    (2)配置beans.xml


Monster类详见上一篇--2.1通过类型来获取bean

MyStaticFactory.java:

package com.li.factory;

import co
首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇使用 Elasticsearch 搭建自己的搜.. 下一篇gRPC之初体验

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目