Spring的IOC入门

什么是IOC

  • IOC:Inversion of Control(控制反转)

    • 控制反转:将对象的创建权反转给(交给)Spring。

  • 下载Spring的开发包。

    官网: http://spring.io/

  • 解压Spring的开发包

  • 在这里插入图片描述

  • docs:Spring的开发规范和API

  • libs:Spring的开发的jar包和源码

  • schema:Spring的配置文件的约束

创建web项目,引入jar包

在这里插入图片描述
在这里插入图片描述
问题:

  • 如果底层的实现切换了,需要修改源代码,能不能不修改程序源代码对程序进行扩展

  • Spring的IOC的底层实现

在这里插入图片描述
工厂模式
在这里插入图片描述

将实现类交给Spring管理

在spring的解压路径下spring-framework-4.2.4.RELEASE\docs\spring-framework-reference\html\xsd-configuration.xml

在这里插入图片描述

编写测试类

在这里插入图片描述

IOC和DI

  • IOC:控制反转,将对象的创建权反转给了Spring。

  • DI:依赖注入,前提必须有IOC环境,Spring管理这个类的时候将类的依赖的属性注入(设置)进来。

  • 面向对象的时候

    • 依赖
    class A{
        
    }
    class B{
        public void xxx(A a){
            
        }
    }
    
    • 继承
    class A{
        
    }
    class B extends A{
        
    }
    
    • 聚合

      has a

Spring的工厂类

  • BeanFactory

    Spring的结构图
    在这里插入图片描述

  • 老版本的工厂类

  • BeanFactory: 调用getBean的时候,才会生成类的实例。

  • ApplicationContext

    • 新版本的工厂类
    • 加载配置文件的时候,就会将Spring管理的类都实例化。
    • ApplicationContext有两个实现类
      • ClassPathXmlApplicationContext:加载类路径下的配置文件
      • FileSystemXmlApplicationContext:加载文件系统下的配置文件
  • Bean标签的id和name的配置

    • id: 使用了约束中的唯一约束,里面不能出现特殊字符的。
    • name:没有使用约束中的唯一约束(理论上可以出现重复的,但是实际开发不能出现的)
  • Bean的生命周期的配置

  • init-method : Bean被初始化的时候执行的方法

  • destroy-method :Bean被销毁的时候执行的方法(Bean是单例创建,工厂关闭)

Bean的作用范围的配置

  • scope :Bean的作用范围
    • singleton :默认Spring会采用单例模式创建对象
    • prototype :多例模式(Struts2和Spring整合的时候一定会用到)
    • request :应用在web项目中,Spring创建这个类以后,将这个类存入到request范围中
    • session :应用在web项目中,Spring创建这个类以后,将这个类存入到session范围中
    • globalsession :应用在web项目中,必须在porlet环境下使用。但是如果没有这种环境,相当于session。

Spring的属性注入

  • 构造方法方式

在这里插入图片描述

  • set方法方式

在这里插入图片描述

  • 接口注入方式

  • P名称空间的属性注入

    • 写法:
      • 普通属性 p:属性名="值"
      • 对象属性 p:属性名-ref="值"

在这里插入图片描述

使用p名称空间

在这里插入图片描述
在这里插入图片描述

SPEL的属性注入(Spring3.0以后)

SPEL:Spring Expression Language:Spring的表达式语言。

  • 语法:
    • #{SPEL}

在这里插入图片描述

集合类型的属性注入

 <!-- Spring的集合属性的注入 -->
        <!-- 注入数组类型 -->
        <bean id="collectionBean" class="com.nice.spring.demo4.CollectionBean">
                <!-- 数组类型 -->
                <property name="arrs">
                        <list>
                                <value>宁海博</value>
                                <value>吴宇桐</value>
                                <value>nice</value>
                                <value>张三</value>
                        </list>
                </property>

                <!-- 注入list集合 -->
                <property name="list">
                        <list>
                                <value>smile</value>
                                <value>jackson</value>
                                <value>james</value>
                                <value>django</value>
                        </list>
                </property>

                <!-- 注入set集合 -->
                <property name="set">
                        <set>
                                <value>haha</value>
                                <value>hehe</value>
                                <value>xixi</value>
                                <value>heihei</value>
                        </set>
                </property>

                <!-- 注入Map集合 -->
                <property name="map">
                        <map>
                                <entry key="fruit1" value="苹果"/>
                                <entry key="fruit2" value="橘子"/>
                                <entry key="fruit3" value="香蕉"/>
                        </map>
                </property>

Spring的分模块开发的配置

  • 在加载配置文件的时候,加载多个

在这里插入图片描述

在一个配置文件中引入多个配置文件

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值