Spring初识——IOC 操作 Bean 管理(基于 xml 方式)

260 阅读2分钟

什么是bean管理?

  • Bean 管理指的是两个操作:

(1)Spring 创建对象

(2)Spirng 注入属性

  • Bean 管理操作有两种方式

(1)基于 xml 配置文件方式实现

(2)基于注解方式实现

一.基于Xml方式创建对象

//定义User类
public class User {  
}
  1. 在 spring 配置文件中,使用 bean 标签,标签里面添加对应属性,就可以实现对象创建.
  2. 在 bean 标签有很多属性,介绍常用的属性
    • id 属性:唯一标识
    • class 属性:类全路径(包类路径)
  3. 创建对象时候,默认也是执行无参数构造方法完成对象创建
<!--配置User类的对象创建-->
<bean id="user" class="com.spring5.User"></bean>

二.基于 xml 方式注入属性

DI:依赖注入,就是注入属性

1. 第一种注入方式:使用 set 方法进行注入
//定义学生类和对应的set方法
 private int age;
 
 private String name;
 
public class Student {
    public void setAge(int age) {
        this.age = age;
    }

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

在 spring 配置文件进行如下配置

<!--使用 property 完成属性注入
name:类里面属性名称
value:向属性注入的值
-->
<bean  id="student" class="com.spring5.Student">
    <property name="age" value="18"></property>
    <property name="name" value="张三"></property>
</bean>
2. 第二种注入方式:使用有参数构造进行注入
//定义学生类和对应的带参构造方法
public class Student {
    private int age;
    private String name;

    public Student(int age, String name) {
        this.age = age;
        this.name = name;
    }
}

在 spring 配置文件进行如下配置

<!-- 有参数构造注入属性
使用constructor-arg完成属性注入-->
<bean id="student" class="com.spring5.Student">
    <constructor-arg name="age" value="18"></constructor-arg>
    <constructor-arg name="name" value="李四"></constructor-arg>
</bean>

三.基于xml 注入其他类型属性

1. 字面量

(1)null 值

<!--null 值-->

<property name="address">
<null/>
</property>

(2)属性值包含特殊符号(使用转义字符或CDATA域实现)

<!--属性值包含特殊符号
1 把<>进行转义 < >
2 把带特殊符号内容写到 CDATA
-->

<property name="address">
<value><![CDATA[<<南京>>]]></value>
</property>
2.外部bean

(1)创建两个类 service 类和 dao 类

(2)在 service 调用 dao 里面的方法

(3)在 spring 配置文件中进行配置

//创建Dao接口
public interface UserDao {
}
//创建Dao接口实现类
public class UserDaoImpl implements  UserDao {
   
}

在 spring 配置文件进行如下配置

<!--1 service 和 dao 对象创建-->

<bean id="userService" class="com.atguigu.spring5.service.UserService">

<!--注入 userDao 对象

name 属性:类里面属性名称

ref 属性:创建 userDao 对象 bean 标签 id 值

-->

<property name="userDao" ref="userDaoImpl"></property>

</bean>

<bean id="userDaoImpl" class="com.atguigu.spring5.dao.UserDaoImpl"></bean>
3.内部bean
//员工类
public class Emp {
private  String ename;
private  String gender;
private Dept dept;
    public Dept getDept() {
        return dept;
    }

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

    public void setEname(String ename) {
        this.ename = ename;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
   
}
//部门类
public class Dept {
    private String dname;

    public void setDname(String dname) {
        this.dname = dname;
    }  
}

在 spring 配置文件进行如下配置

<bean id="emp" class="com.spring5.bean.Emp">
    <property name="ename" value="张三"></property>
    <property name="gender" value="女"></property>
    <property name="dept" >
        <bean id="dept" class="com.spring5.bean.Dept">
            <property name="dname" value="安保部"></property>
        </bean>
    </property>
</bean>

四.基于xml 注入集合属性

1. 注入普通属性值

创建Stu类,定义数组、list、map、set 类型属性,生成对应 set 方法

public class Stu {
//1 数组类型属性
private String[] courses;

//2 list 集合类型属性
private List<String> list;

//3 map 集合类型属性
private Map<String,String> maps;

//4 set 集合类型属性
private Set<String> sets;

public void setSets(Set<String> sets) {
this.sets = sets;
}

public void setList(List<String> list) {
this.list = list;
}

public void setMaps(Map<String, String> maps) {
this.maps = maps;
}

}

在 spring 配置文件进行如下配置


 <property name="courses">
            <array>
                <value>java课程</value>
                <value>数据库课程</value>
            </array>
        </property>
        <property name="list">
            <list>
                <value>张三</value>
                <value>李四</value>
            </list>
        </property>
        <property name="maps">
            <map>
                <entry key="JAVA" value="java"></entry>
                <entry key="PHP" value="php"></entry>
            </map>
        </property>
         <property name="sets">
         <set>
             <value>mysql</value>
             <value>redis</value>
         </set>
         </property>
    </bean>
</beans>
2.在集合里面设置对象类型值
//创建Student类
public class Student {
    private List<Course> list;
public void setCourseList(List<Course> courseList) {
    this.courseList = courseList;
} 
    }
//定义Sources类
public class Course {
    private  String cname;

    public void setCname(String cname) {
        this.cname = cname;
    }
    

在 spring 配置文件进行如下配置

<!--创建多个 course 对象-->
<bean id="course1" class="com.atguigu.spring5.collectiontype.Course">
<property name="cname" value="Spring5 框架"></property>
</bean>
<bean id="course2" class="com.atguigu.spring5.collectiontype.Course">
<property name="cname" value="MyBatis 框架"></property>
</bean>

<!--注入 list 集合类型,值是对象-->
<property name="courseList">
<list>
<ref bean="course1"></ref>
<ref bean="course2"></ref>
</list>
</property>