Spring框架两个核心部分:IOC和Aop
1.IOC:控制反转,把创建对象过程交给Spring处理
2.Aop,面向切面,不修改源代码进行功能增强
IOC容器
一.IOC底层原理
(1)xml配置文件,配置创建的对象
<bean id="user" class="com.it.spring5.User"></bean>
(2)有service和dao类,创建工厂类
class UserFactory{
public static UserDao getDao(){
String classValue = class属性值; //1.xml解析
//2.通过反射创建对象
Class clazz = Class.forName(classValue);
//3.创建对象
return (UserDao)clazz.newInstance();
}
}
二.IOC接口(BeanFactory)
1.IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
2.Spring提供IOC容器实现两种方式(两种接口)
(1)BeanFactory : IOC容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用
加载配置文件时不会创建对象,在获取对象(使用)才去创建对象
(2)ApplicationContext : BeanFactory接口的子接口,提供了更多更强大的功能,一般由开发人员使用
加载配置文件时就会把在配置文件对象进行创建
三.IOC操作Bean管理
1.什么是Bean管理
(1)Spring创建对象
(2)Spring注入属性
2.Bean管理操作有两种方式
1.基于xml配置文件方式实现
1.基于xml方式创建对象
<bean id="user" class="com.it.spring5.User"></bean>
(1)在Spring配置文件中,使用bean标签,标签里添加对应属性,就可以实现对象创建
(2)在bean标签有很多属性,常用属性
id属性:为对象取唯一标识
class属性:类全路径(包类路径)
2.基于xml方式注入属性
(1)DI:依赖注入,就是注入属性
1.第一种注入方式:使用set方法进行注入
1.创建类,定义属性和对应的set方法
2.在Spring配置文件配置对象创建,配置属性注入
<!-- 2.set方法注入属性 -->
<bean id="book" class="com.it.spring5.Book"></bean>
<!--
使用property完成属性注入
name:类里面属性名称
value:向属性注入的值
-->
<property name="bname" value="数据结构"></property>
2.第二种注入方式:使用有参构造函数进行注入
(1)创建类,定义属性,创建属性对应有参构造方法
(2)在Spring配置文件中配置
<!-- 有参构造方法注入属性-->
<bean id="orders" class="com.it.spring5.Orders">
<constructor-arg name="oname" value="笔记本"></constructor-arg>
<constructor-arg name="addrss" value="China"></constructor-arg>
<!-- 可以根据索引值对应到属性 -->
<!-- <constructor-arg index="" value=""></constructor-arg>-->
</bean>
3.p名称空间注入
(1)使用p名称空间注入,可以简化基于xml配置方式
第一步 添加p名称空间在配置文件中
<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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
第二部 进行属性注入,在bean标签里面进行操作
<bean id="book" class="com.it.spring5.Book" p:bname="线代" p:bauthor="老师"></bean>
</beans>
3.xml注入其他类型属性
1.字面量
(1)null值
<property name="address">
<null></null>
</property>