Spring是一个轻量级的控制反转(IOC/DI)和面向切面编程(AOP容器)的开源框架;
容器(container):从程序设计角度看就是装对象的对象,因为存在放入,拿出等操作,所以容器还管理着对象的生命周期,
例如:tomcat就是Servlet和Jsp的容器,它管理着servlet的生命周期
IOC:Inversion Of Control (控制反转),是一种设计思想
就是将原本在程序中手动创建对象的控制权,交由Spring框架来创建,管理,装配.
调用者只管负责从Spring容器中获取需要使用的对象,不关心对象的创建过程,也不关心该对象依赖对象的创建以及依赖关系的组装,也就是把创建对象的控制权反转给Spring框架。
DI:Dependency Injection (依赖注入)从字面上分析:IOC:指将对象的创建权,反转给Spring容器;DI:指Spring创建对象的过程中,将对象依赖属性(常量,对象,集合)通过配置设值给该对象。
IOC从字面意思上很难体现出谁来维护对象之间的关系,Martin Fowler提出一个新的概念–DI,更明确描述了“被注入对象(Service对象)依赖IOC容器来配置依赖对象(DAO对象)。
Maven坐标:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
ApplicationContext context = new ClassPathXmlApplicationContext(“application.xml”);
IOC创建对象的方式
1.使用无参构造创建对象,默认!
2.假设我们使用有参构造创建对象
假设ThingTwo和ThingThree类不是通过继承关联的,则不存在潜在的歧义。因此,以下配置可以正常工作,并且您无需在 元素中显式指定构造函数参数索引或类型。
构造函数参数类型匹配
构造函数参数索引
构造函数参数名称
总结:在配置文件加载的时候,容器中管理的对象就已经初始化了
起别名:
Bean的配置:
Import
Import一般用于团队开发使用,它可以将多个配置文件导入合并为一个,使用配置文件时直接使用总配置文件即可
依赖注入:
1.构造器注入
2.Set方式注入
依赖注入:
依赖:bean对象的创建依赖于容器
注入:bean对象中的所有属性,由容器来注入
<!--List-->
<property name="hobbys">
<list>
<value>游戏</value>
<value>三国</value>
<value>敲代码</value>
</list>
</property>
<!--Map-->
<property name="card">
<map>
<entry key="身份证" value="1212244546"/>
<entry key="银行卡" value="4211256688"/>
</map>
</property>
<!--Set-->
<property name="games">
<set>
<value>Steam</value>
<value>DNF</value>
<value>三国志14</value>
</set>
</property>
<!--null-->
<property name="wife">
<null/>
</property>
<!--空串-->
<property name="girlFriends" value=""/>
<!--properties-->
<property name="info">
<props>
<prop key="user">root</prop>
<prop key="password">123</prop>
</props>
</property>
p命名空间注入: 首先要导入名称空间,加上下面这行: xmlns:p="http://www.springframework.org/schema/p"
c命名空间注入:
xmlns:c=“http://www.springframework.org/schema/c”