1.Spring 的核心构成
IOC Spring 最核心的模块
DAO Spring 对访问数据库的支持 主要封装的是JDBC
MVC Spring 对 MVC 设计模式的支持 (SSM)
AOP (Aspect Orientied Programing)面向切面编程
ORM 对象关系映射 Spring 要和ORM框架结合 Mybatis
2.什么是IOC
Inversion Of Control 控制反转
程序的开发 由原来的 需要某个对象时 由原来的new的方式去 变成了由 容器来提供对象
就是把对象的控制权交给容器。 容器来负责对象的创建 和 注入。这样做可以降低对象之间的
耦合度。
IOC的底层由Spring 容器来完成,容器的作用是 负责组件对象的创建 和 对象关系维护。
3.Spring 容器
Spring 容器 是用来管理 java bean 组件
Spring 容器 实现了 IOC 和 AOP
Spring 容器 对应的类型 ApplicationContext 和 BeanFactory
4.Spring 容器使用的步骤
4.1 建立一个项目 导入spring 的 ioc 相关 jar包 到项目
4.2 拷贝Spring 容器对应的配置文件 到 src下
4.3 在Spring 配置文件中 配置 java 类
通过Spring容器获取对象
5.使用上面的spring 容器的使用步骤 获取一个Emp 类型的对象
这个Emp 类型 需要自定义 字段有 name age salary
方法有 show toString 构造 。
通过容器 来获取Emp 类型的对象
4.1 考虑 导入spring ioc 相关jar包 和 spring 的配置文件
4.2 写一个Emp 类 提供成员变量 get set方法 构造 toString show
4.3 在Spring 配置文件 配置 Emp 类型
<bean id="bean组件标识" class="包名+类名" />
4.4 构建Spring 容器对象 加载上面的配置文件 通过Spring容器获取对象
ApplicationContext app = new ClassPathXmlApplicationContext("文件");
app.getBean("配置文件中的标识",类型.class);
6.Spring 容器创建bean对象的三种方式
6.1 使用构造方法来创建对象 默认调用无参构造
<bean id="" class="构建的对象对应的包名+类名" > </bean>
6.2 使用静态工厂方法
<bean id="对象标识" class="工厂的包名+类名" factory-method="静态方法名"> </bean>
6.3 使用实例化工厂方法
<bean id="对象标识" class="目标对象的包名+类名" factory-bean="工厂对象的标识"
factory-method="实例化方法名"> </bean>
作用域的指定 使用 bean 标签中的 scope 来指定
scope="singleton" 这是spring 容器 默认对一个组件进行的处理
scope="prototype" 非单例的
request session 等这些作用域 在web中使用
8.对象的初始化问题 (6)
Spring 容器创建完对象之后 可以对对象进行初始化
第一种手段 是 在beans 标签中 加 default-init-method 指定初始化方法的名字 这样
针对所有的bean 对象 都起作用,影响的范围比较大 所有某个类型中没有对应的初始化方法
时程序不会报错。
第二种手段 在bean 标签中 加 init-method 指定的方法名 只针对加了init-method 的
bean 影响范围比较小 所以没有对应的初始化的方法则会报错。
9.对象的销毁问题 (6)
第一种手段 是 在beans 标签中 加 default-destroy-method 指定销毁方法的名字 这样
针对所有的bean 对象 都起作用,影响的范围比较大 所有某个类型中没有对应的初始化方法
时程序不会报错。
第二种手段 在bean 标签中 加 destroy-method 指定的方法名 只针对加了destroy-method 的
bean 影响范围比较小 所以没有对应的销毁的方法则会报错。
多例模式下 销毁方法的输出不再表现
10.bean 对象的延迟实例化
bean对象 默认是单例的 在这种作用域下 在Spring 容器启动时就会创建对象,可以通过设置
对对象进行延迟实例化。可以在 beans 标签中 加 default-lazy-init 这个使用比较少
也可以在 bean标签中 加 lazy-init="true"
11.什么是DI
Dependence Injection 依赖注入 解决组件的装配问题
DI 其实是对IOC (控制反转) 的一种具体实现手段
12.DI的实现方式
12.1 setter 注入
基于set方法的注入
<bean id="player" class="com.xdl.bean.Player">
<property name="name" value="小马哥"></property>
<property name="age" value="38"></property>
<property name="money" value="1000000000"></property>
<property name="card" ref="card1"></property>
</bean>
12.2 构造器注入
按照参数的位置 来指定对应的构造方法的参数值
<!-- 创建一个玩家 名字是王诗龄 45 1 -->
<bean id="xiaohua" class="com.xdl.bean.Player">
<constructor-arg index="0" value="王诗龄"></constructor-arg>
<constructor-arg index="1" value="8"></constructor-arg>
<constructor-arg index="2" value="111" ></constructor-arg>
<constructor-arg index="3" ref="card1"></constructor-arg>
</bean>
IOC Spring 最核心的模块
DAO Spring 对访问数据库的支持 主要封装的是JDBC
MVC Spring 对 MVC 设计模式的支持 (SSM)
AOP (Aspect Orientied Programing)面向切面编程
ORM 对象关系映射 Spring 要和ORM框架结合 Mybatis
2.什么是IOC
Inversion Of Control 控制反转
程序的开发 由原来的 需要某个对象时 由原来的new的方式去 变成了由 容器来提供对象
就是把对象的控制权交给容器。 容器来负责对象的创建 和 注入。这样做可以降低对象之间的
耦合度。
IOC的底层由Spring 容器来完成,容器的作用是 负责组件对象的创建 和 对象关系维护。
3.Spring 容器
Spring 容器 是用来管理 java bean 组件
Spring 容器 实现了 IOC 和 AOP
Spring 容器 对应的类型 ApplicationContext 和 BeanFactory
4.Spring 容器使用的步骤
4.1 建立一个项目 导入spring 的 ioc 相关 jar包 到项目
4.2 拷贝Spring 容器对应的配置文件 到 src下
4.3 在Spring 配置文件中 配置 java 类
<bean id="bean组件标识" class="包名+类名" />
4.4 构建Spring 容器对象 加载上面的配置文件通过Spring容器获取对象
5.使用上面的spring 容器的使用步骤 获取一个Emp 类型的对象
这个Emp 类型 需要自定义 字段有 name age salary
方法有 show toString 构造 。
通过容器 来获取Emp 类型的对象
4.1 考虑 导入spring ioc 相关jar包 和 spring 的配置文件
4.2 写一个Emp 类 提供成员变量 get set方法 构造 toString show
4.3 在Spring 配置文件 配置 Emp 类型
<bean id="bean组件标识" class="包名+类名" />
4.4 构建Spring 容器对象 加载上面的配置文件 通过Spring容器获取对象
ApplicationContext app = new ClassPathXmlApplicationContext("文件");
app.getBean("配置文件中的标识",类型.class);
6.Spring 容器创建bean对象的三种方式
6.1 使用构造方法来创建对象 默认调用无参构造
<bean id="" class="构建的对象对应的包名+类名" > </bean>
6.2 使用静态工厂方法
<bean id="对象标识" class="工厂的包名+类名" factory-method="静态方法名"> </bean>
6.3 使用实例化工厂方法
<bean id="对象标识" class="目标对象的包名+类名" factory-bean="工厂对象的标识"
factory-method="实例化方法名"> </bean>
(使用日历对象 来获取日期对象 )
<!-- 使用静态工厂方式 获取日历对象 -->
<bean id="cal" class="java.util.Calendar" factory-method="getInstance"></bean>
<!-- 使用实例化工厂方式 使用 日历对象获取日期对象 -->
<bean id="date" class="java.util.Date" factory-bean="cal" factory-method="getTime"></bean>
作用域的指定 使用 bean 标签中的 scope 来指定
scope="singleton" 这是spring 容器 默认对一个组件进行的处理
scope="prototype" 非单例的
request session 等这些作用域 在web中使用
8.对象的初始化问题 (6)
Spring 容器创建完对象之后 可以对对象进行初始化
第一种手段 是 在beans 标签中 加 default-init-method 指定初始化方法的名字 这样
针对所有的bean 对象 都起作用,影响的范围比较大 所有某个类型中没有对应的初始化方法
时程序不会报错。
第二种手段 在bean 标签中 加 init-method 指定的方法名 只针对加了init-method 的
bean 影响范围比较小 所以没有对应的初始化的方法则会报错。
9.对象的销毁问题 (6)
第一种手段 是 在beans 标签中 加 default-destroy-method 指定销毁方法的名字 这样
针对所有的bean 对象 都起作用,影响的范围比较大 所有某个类型中没有对应的初始化方法
时程序不会报错。
第二种手段 在bean 标签中 加 destroy-method 指定的方法名 只针对加了destroy-method 的
bean 影响范围比较小 所以没有对应的销毁的方法则会报错。
多例模式下 销毁方法的输出不再表现
10.bean 对象的延迟实例化
bean对象 默认是单例的 在这种作用域下 在Spring 容器启动时就会创建对象,可以通过设置
对对象进行延迟实例化。可以在 beans 标签中 加 default-lazy-init 这个使用比较少
也可以在 bean标签中 加 lazy-init="true"
11.什么是DI
Dependence Injection 依赖注入 解决组件的装配问题
DI 其实是对IOC (控制反转) 的一种具体实现手段
12.DI的实现方式
12.1 setter 注入
基于set方法的注入
<bean id="player" class="com.xdl.bean.Player">
<property name="name" value="小马哥"></property>
<property name="age" value="38"></property>
<property name="money" value="1000000000"></property>
<property name="card" ref="card1"></property>
</bean>
12.2 构造器注入
按照参数的位置 来指定对应的构造方法的参数值
<!-- 创建一个玩家 名字是王诗龄 45 1 -->
<bean id="xiaohua" class="com.xdl.bean.Player">
<constructor-arg index="0" value="王诗龄"></constructor-arg>
<constructor-arg index="1" value="8"></constructor-arg>
<constructor-arg index="2" value="111" ></constructor-arg>
<constructor-arg index="3" ref="card1"></constructor-arg>
</bean>