IOC容器-Bean管理-基于XML方式(一)

IOC的概念和原理

什么是IOC

  1. Spring–IOC(控制反转),创建和调用对象交给Spring管理
  2. 使用IOC的目的:为了降低耦合度

IOC底层原理

xml解析、工厂模式、反射

IOC接口

  1. IOC思想基于IOC容器完成,IOC底层就是对象工厂
  2. Spring提供的IOC容器实现的两种方式(两个接口):
    a)BeanFactory
      IOC容器基本实现是Spring内部接口的使用接口,不提供给开发人员进行使用
      特点:加载配置文件时候不会创建对象,在获取对象时才会创建对象。
    b)ApplicationContext
      BeanFactory接口的子接口,提供更多更强大的功能,提供给开发人员使用
      特点:加载配置文件时候就会把在配置文件对象进行创建。推荐使用!
    3.ApplicationContext接口的实现类(具体根据API文档查看☺)

IOC容器–Bean管理操作

IOC操作Bean管理
a) Bean管理就是两个操作:(1)Spring创建对象;(2)Spring注入属性
b) Bean具体实现方式:(1)基于XML配置文件实现 (2)基于注解方式实现

基于XML配置文件创建对象

<!--1 配置User对象创建-->
<bean id="user" class="com.spring.User"></bean>

基于XML配置文件注入属性

DI—依赖注入(注入属性)

1. 通过set方法注入属性

创建Book类

//(1)传统方式: 创建类,定义属性和对应的set方法
public class Book {
    
    
        //创建属性
        private String bname;

        //创建属性对应的set方法
        public void setBname(String bname) {
    
    
            this.bname = bname;
        }
   }

修改bean1.xml配置文件

<!--2)spring方式: set方法注入属性-->
<bean id="book" class="com.atguigu.spring5.Book">
    <!--使用property完成属性注入
        name:类里面属性名称
        value:向属性注入的值
    -->
    <property name="bname" value="Hello"></property>
    <property name="bauthor" value="World"></property>
</bean>

2. 通过有参构造注入属性

创建Orders类

//(1)传统方式:创建类,构建有参函数
public class Orders {
    
    
    //属性
    private String oname;
    private String address;
    //有参数构造
    public Orders(String oname,String address) {
    
    
        this.oname = oname;
        this.address = address;
    }
  }

修改bean1.xml配置文件

<!--2)spring方式:有参数构造注入属性-->
<bean id="orders" class="com.atguigu.spring5.Orders">
    <constructor-arg name="oname" value="Hello"></constructor-arg>
    <constructor-arg name="address" value="China!"></constructor-arg>
</bean>

3.p名称空间注入属性(了解即可)

<!--1、添加p名称空间在配置文件头部-->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"		<!--在这里添加一行p-->

<!--2、在bean标签进行属性注入(算是set方式注入的简化操作)-->
    <bean id="book" class="com.atguigu.spring5.Book" p:bname="very" p:bauthor="good">
    </bean>

4. 注入null值和特殊符号

<bean id="book" class="com.atguigu.spring5.Book">
    <!--1)null值-->
    <property name="address">
        <null/><!--属性里边添加一个null标签-->
    </property>
    
    <!--2)特殊符号赋值-->
     <!--属性值包含特殊符号
       a 把<>进行转义 &lt; &gt;
       b 把带特殊符号内容写到CDATA
      -->
        <property name="address">
            <value><![CDATA[<<南京>>]]></value>
        </property>
</bean>

猜你喜欢

转载自blog.csdn.net/Kc635908933/article/details/111287399