1.介绍Spring
1.1:概念
介绍Spring
Spring家族:是一个技术级,包含多个技术,每一个技术解决一个问题
SpringFrame:spring底层技术,是其他spring技术的基础,所有的技术都依赖Spring框架运行
Spring框架:是一个基于java轻量级别的javaEE开源框架
1.2Spring框架内部技术
CoreContainers:核心容器,用来保存spring管理的对象,实现解耦
AOP:实现功能增强,底层代理模式
Data Access:提供资助的数据层操作技术,并能整合市面上常见的数据层技术
Web:提供自主的表现层技术(SpringMvc),并能整合市面上常见的表现层技术
Test:提供有方便的测试方式
2.核心(Ioc/DI)
2.1核心概念
控制反转Ioc:就是说对象的创建全发生改变,由程序使用时主动new变成由外部提供
依赖注入:受容器管理的对象可以在容器中完成相互之间的依赖关系绑定,实现对象与对象之间的依赖关系建立
Ioc容器:提供了一个保存对象的容器,可以提供对象
bean:Spring管理的资源叫做bean,Spring容器中保存的对象成为bean
2.2spring核心框架作用:解耦
3.入门案例步骤
3.1Ioc入门案例
1.导入Spring-cotext *****版本自己选择
2.创建要管理的对象(Dao Service)
3.配置applicationContext.xml beans.xml
4.获取对象
ApplicationContext ctx=new ClassPathXmlApplicationContext("配置文件名.xml");
5.使用容器对象获取bean
ctx.getbean("bean的id")
3.2DI入门案例
1.基于Ioc入门案例制作
2.在需要资源的位置(Service实现类)定义要使用的资源
3.为要注入的提供资源的set方法(标准Setter)
4.在配置中设置依赖关系
- <bean>
- <property name="注入的属性名/setter方法名" ref="要注入的bean的id"/>
- bean>
4.bean配置
4.1相关配置
bean:标签 用于定义bean
id:属性,表示bean
name:属性,设置别名,使用空格,逗号,分号隔离即可
class:属性,设置bean类型
scope:属性,设置bean创建的对象是否为单例,默认为singleton,prototrpe
注意实体类通常不会交给bean管理
4.2bean的初始化
构造器初始化(常用)
默认spring调用无参构造方法创建对象
静态工厂初始化
提供一个静态工厂,创建出的bean即静态工厂的返回值
class:静态工厂类名
factor-method:静态工厂方法名
实例工厂初始化
提供一个实例工厂,创建出的bean即实例工厂的返回值
factory-bean:实例工厂对象对应的bean(要单独配置工厂bean)
factory-method:实例工厂名
4.3依赖注入
根据注入的方式分类
1.setter注入(常用)
2.构造器注入
根据注入的数据类型分类
引用数据类型分类(常用)
简单类型
数据基本类型
String
1.setter注入引用类型
1.提供setter方法
2.使用ref属性绑定注入的bean
- <bean>
- <property name="??" ref="beanId1">
- <property name="??" ref="beanId2">
- bean>
2.setter注入简单类型
1.提供setter方法
2.使用value属性绑定注入的bean
- <bean>
- <property name="??" value="value1">
- <property name="??" value="value2">
- bean>
1.构造器注入引用类型
1.提供setter方法
2.使用ref属性绑定注入的bean
- <bean>
- <constructor-arg name="??" ref="beanId1">
- <constructor-arg name="??" ref="beanId2">
- bean>
2.构造器注入简单类型
1.提供setter方法
2.使用value属性绑定注入的bean
- <bean>
- <constructor-arg name="??" value="value1">
- <constructor-arg name="??" value="value2">
- bean>
还可以通过type设置构造器注入的类型,还可以通过index按照参数位置进行注入
2:自动装配
对注入的引用类型资源按照指定规则自动注入
前提:要注入的东西必须存在
自动装配的类型
byType:按类型(常用)
byName:按照名称
constructor:按构造方法
no:不启用自动装配(默认)