Spring的IOC思想——控制反转

         基于责任链的开发,对象和对象之间过于紧密,造成代码的迭代更新特别麻烦,为了解决这个问题,我们创建一个对象(Spring容器),使用该对象对责任链中的对象进行统一创建和管理。

控制反转——IOC(Inversion of Control)

控制:Spring容器帮助我们创建和管理对象的过程称为控制;

反转:Spring容器将创建好的对象注入给使用对象的过程称为反转。

简言之,项目中的对象不在new出来,而是从容器中获取,由容器注入对象的属性

使用:

1.加载jar包

         核心jar包: beans   context   core    expression

                   

2.创建xml文件

 src下新建applicationContext.xml

       2.1 文件名称和路径自定义.

       2.2 记住Spring容器ApplicationContext,applicationContext.xml配置的信息最终存储到了AppliationContext容器中

       2.3 spring配置文件是基于schema

                 2.3.1 schema文件扩展名.xsd

                 2.3.2 schema理解成dtd的升级版.(dtd在mybatis.xml中)

                            2.3.2.1 dtd具备更好的扩展性.

                2.3.3 每次引入一个xsd文件是一个namespace(xmlns)

      2.4 配置文件中只需要引入基本schema

                2.4.1 通过<bean/> 创建对象.

                2.4.2 默认配置文件被加载时创建对象.

<?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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd">

  <!-- id表示获取到对象标识

     class 创建哪个类的对象

     -->

    <bean id="peo" class="com.mzx.pojo.People"/>

</beans>

3.调用Spring容器对象获取对象

        ApplicationContext  ac=new  ClassPathXMLApplicationContext("ApplicationContext.xml");

        ac.getBean("xml文件中bean标签的id属性名");

3.1 getBean(“<bean>标签id”,返回值类型);如果没有第二个参数,默认是Object

3.2 getBeanDefinitionNames(),Spring容器中目前所有管理的所有对象.

ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

People people = ac.getBean("peo",People.class);

System.out.println(people);

//String[] names = ac.getBeanDefinitionNames();

//for (String string : names) {

//System.out.println(string);

//}

木子璇总结时刻:欢迎小伙伴们提出建议哦,如有错误,望大神指出哦,谢谢啦。

猜你喜欢

转载自blog.csdn.net/qq_41617744/article/details/80233438