IOC(概念和原理)
1.什么是IOC
(1)控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理
(2)使用IOC目的:为了耦合度降低
(3)做入门案例就是IOC实现
2.IOC底层原理
(1)xml解析、工厂模式、反射
3.画图讲解IOC底层原理
IOC(接口)
1.IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
2.Spring提供IOC容器实现两种方式:(两个接口)
(1)BeanFactory:IOC容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用
***加载配置文件的时候不会创建对象,在获取对象(使用)才去创建对象
(2)ApplicationContext:BeanFactory的子接口,提供更强大的功能,一般由开发人员进行使用
***加载配置文件的时候就会把配置文件对象进行创建对象.
3.ApplicationContext接口有实现类
ClassPath是src下类路径。
FileSystem是对应的磁盘下的文件的全路径。
IOC操作Bean管理(概念)
1.什么是Bean管理(Bean管理指的是两个操作)
(1)Spring创建对象
(2)Spring注入属性
2.Bean管理操作有两种方式
(1)基于xml配置文件方式实现
(2)基于注释方式实现
IOC操作Bean管理(基于xml方式)
1.基于xml方式创建对象
(1)在Spring配置文件中,使用Bean标签,标签里边添加对象的属性,就可以实现对象创建
(2)在Bean标签有很多属性,介绍常用的属性
*id属性:唯一的标识,,,给对象起一个别名,方便后面用
*class属性:类全路径(包类路径)
(3)创建对象时候,默认也是执行无参数构造方法完成对象创建
2.基于xml方式注入属性
(1)DI:依赖注入,就是注入属性
A:第一种方式:使用set方法进行注入
a:创建类,定义属性和对应的set方法(创建方法的快捷键alt+insert,创建主类的快捷键psvm)
b:在spring配置文件配置对象创建,配置属性注入(注释快捷键ctrl+shift+/)
B:第二种方式:使用有参数的构造进行注入
a:创建类,定义属性,创建属性对应有参数构造方法
b:在spring配置文件中进行配置
3.p名称空间注入(了解)
(1)使用p名称空间注入,可以简化基于xml配置方式
第一步 添加p名称空间在配置文件中
第二步 进行属性注入,在bean标签里边进行操作
IOC操作Bean管理(xml注入其他类型属性)
1.字面量
(1)null值
(2)属性值包含特殊符号(转义字符<>都行,把带特殊符号内容写到CDATA格式:<![CDATA[特殊符号]]>)
2.注入属性-外部bean
(1)创建两个类service类和dao类
(2)在service调用dao里面的方法
(3)在spring配置文件中进行配置.
3.注入属性-内部bean和级联赋值
(1)一对多关系,部门和员工
一个部门有多个员工,一个员工数以一个部门
部门是一,员工是多。
(2)在实体类之间表示一对多关系,员工表示所属部门,使用对象类型属性进行表示
(3)在spring配置文件中进行配置
4.注入属性-级联赋值
(1)第一种写法
(2)第二种写法
IOC操作Bean管理(xml注入集合属性)
1.注入数组类型属性
2.注入List集合类型属性
3.注入Map集合类型
(1)创建类,定义数组,list,map,set类型属性,生成对应set方法
(2)在spring配置文件中进行配置
4.在集合里边设置对象类型值
5.把集合注入部分提取出来
(1)在Spring配置文件中引入名称空间util
(2)使用util标签完成list集合注入提取
IOC操作Bean管理(FactoryBean)
1.Spring有两种类型bean,一种普通bean,另外一种工厂bean(FactoryBean)
2.普通bean:在spring配置文件中定义bean类型就是返回类型
3.工厂bean:在配置文件中定制bean类型可以和返回类型不一样
第一步 创建类,让这个类作为工厂bean,实现接口FactoryBean
第二步 实现接口里面的方法,在实现的方法中定义返回的bean类型
IOC操作Bean管理(bean作用域)
1.在Spring里面,设置创建bean实例是单实例还是多实例
2.在Spring里面,默认情况下,bean是单实例对象(输出是一样的)
3.如何设置单实例还是多实例
(1)在spring配置文件bean标签里面有属性(scope)用于设置单实例还是多实例
(2)Scope属性值
第一个值 默认值:singleton,表示是单实例对象
第二个值 prototype,表示是多实例对象(输出不同了)
(3)Singleton和prototype区别
第一 singleton单实例,prototype多实例
第二 设置scope值是singleton时候,加载spring配置文件时候就会创建单实例对象,,,
设置scope值是prototype时候,不是在加载spring配置文件是创建对象,在调用getBean方法时候创建多实例对象
IOC操作Bean管理(bean生命周期)
1.生命周期
(1)从对象创建到对象销毁的过程
2.bean生命周期
(1)通过构造器创建bean实例(无参数构造)
(2)为bean的属性设置值和对其他bean引用(调用set方法)
(3)调用bean的初始化的方法(需要进行配置)
(4)Bean可以使用了(对象获取到了)
(5)当容器关闭的时候,调用bean的销毁方法(需要进行配置销毁方法)
3.演示bean生命周期
4.bean的后置处理器,bean的生命周期有七步操作
(1)通过构造器创建bean实例(无参数构造)
(2)为bean的属性设置值和对其他bean引用(调用set方法)
(3)把bean实例传递bean后置处理器的方法
postProcessBeforeInitialization
(4)调用bean的初始化的方法(需要进行配置)
(5)把bean实例传递bean后置处理器的方法
postProcessAfterInitialization
(6)Bean可以使用了(对象获取到了)
(7)当容器关闭的时候,调用bean的销毁方法(需要进行配置销毁方法)
5.演示添加后置处理器效果
(1)创建类,实现接口BeanPostProcessor,创建后置处理器
IOC操作Bean管理(xml自动装配)
1.什么是自动装配
(1)根据指定装配规则(属性名称或者属性类型),Spring自动将匹配的属性值进行注入
2.演示自动装配过程
(1)根据属性名称自动注入
(2)根据属性类型自动注入
IOC操作Bean管理(外部属性文件)
1.直接配置数据库配置
(1)配置德鲁伊连接池
(2)引入德鲁伊连接池依赖jar包
(下载地址Central Repository: com/alibaba/druid/1.2.8 (maven.org))
2.引入外部属性文件配置数据库连接池
(1)创建外部属性文件,properties格式文件,写数据库信息
(2)把外部properties属性文件引入到spring配置文件中
*引入context名称空间
*在spring配置文件中使用标签引入外部属性文件
IOC操作Bean管理(基于注解方式)
1.什么是注解
(1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值…)
(2)使用注解。注解作用在类上面,方法上面,属性上面
(3)使用注解目的:简化xml配置
2.Spring针对Bean管理中创建对象提供注解
(1)@Component
(2)@Service
(3)@Controller
(4)@Repository
***上面四个注解功能是一样的,都可以用来创建bean实例
3.基于注解方式实现对象创建
第一步 引入依赖
第二步 开启组件扫描
第三步 创建类,在类上面添加创建对象注解
4.开启组件扫描细节配置
5.基于注解方式实现属性注入
(1)@AutoWired:根据属性类型进行自动装配
第一步 把service和dao对象创建,在service和dao类添加创建对象注释
第二步 在service注入dao对象,在service类添加dao类型属性,在属性上面使用注释
(2)@Qualifier:根据属性名称进行注入
这个@Qualifier注解的使用,和上面@AutoWired一起使用
(3)@Resource:可以根据类型注入,可以根据名称注入(属于java扩张包的工具,,spring不建议使用)
(4)@Value:注入普通类型属性
6.完全注解开发
(1)创建配置类,替代xml配置文件
(2)编写测试类