Spring----简介、IOC、DI与MyBatis和WEB项目的整合
一、Spring简介
Rod Johnson发明,此人是一个轮子理论(不重复造轮子)推崇者,所以设计了Spring框架提高开发效率,直接使用框架的方法。
1)Spring核心功能
1.IOC / DI :控制反转/依赖注入
2.AOP : 面向切面编程
3.声明式事务
2)Spring框架runtime(运行时环境)
首先Spring其实就是一个大容器,但Spring框架的基本容器是 Core Container,也就是想要跑起来Spring框架的最低标准。
1.Test:Spring提供的测试功能
2.Core Container:Spring框架的核心容器。Spring启动的最基本的条件
Beans:负责创建类对象并管理对象
Core:核心类
Context:上下文参数,获取外部资源或者管理注解等
SpEL:expression.jar,Spring的一种表达式语言(类似于JSTL)
3.AOP:实现aop功能需要依赖
4.Aspects:切面AOP依赖的包
5.DataAccess/Integration:Spring封装数据访问层(DAO)相关内容
JDBC:Spring对JDBC封装后的代码
ORM:封装了持久层(DAO)框架的代码。例如Hibernate
transactions:对应 spring-tx.jar 声明式事务使用
6.WEB:需要Spring完成web相关功能的时候使用
例如:由tomcat加载Spring配置文件时需要由Spring-web包
3)Spring框架种重要概念
1.容器(container):Spring当作一个大的容器
2.BeanFactory接口:为Spring的老版本接口 新版本中ApplicationContext 接口是BeanFactory的子接口。
3.再Spring3 开始吧Spring框架的功能拆分成多个jar(Spring2之前就一个jar包)
二、IOC简介
IOC(inversion of Control):控制反转,IOC的主要功能就是之前程序员需要通过new进行实例化对象的事情,转交给Spring负责完成。
控制:控制类的对象 反转:交给Spring负责
最大的作用就是:解耦,开发人员不需要管理对象,解除了对象管理和开发人员之间的耦合
三、Spring环境搭建
1)导入jar包
Spring的基本运行环境是Core Container下的四个包以及一个日志包(commons-logging)
2)在src下新建 applicationContext.xml
1.文件名称和路径自定义
2.applicationContext.xml配置的信息最终存储到了ApplicationContext容器种
3.Spring的配置文件applicationContext.xml是基于schema的
schema的文件扩展名是.xsd,可以理解为DTD的升级版(DTD:可实现xml文件的自动补全功能)
每次引入一个xsd文件就是一个namespace(xmlns)命名空间
4.配置文件中只需要引入基本schema,以后需要什么引入什么,可以在官方文档中查找。
<通过bean/>创建对象,且默认在配置文件被加载时就将对象创建
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- id 表示获取到对象标识
class 创建哪个类的对象
-->
<bean id="peo" class="com.bjsxt.pojo.People"/>
</beans>
在java中添加测试方法
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
People people = ac.getBean("peo",People.class);
System.out.println(people);
getBean(“<bean>标签 id 值”,返回值类型);如果没有第二个参数, 默认是 Object
getBeanDefinitionNames(),Spring 容器中目前所有管理的所有对象
四、Spring创建对象的三种方式
1)通过构造方法创建
1.无参构造方法:默认
2.有参构造方法:需要明确在xml文件中配置,并且在类中提供有参构造方法。
在applicationContext.xml中设置调用哪个构造方法创建对象,如果设定的条件匹配多个构造方法的时候,则执行最后的那个构造方法。
<bean id="peo" class="com.bjsxt.pojo.People">
<!-- ref 引用另一个 bean value 基本数据类型或String 等 -->
<constructor-arg index="0" name="id" type="int" value="123">
</constructor-arg>
<constructor-arg index="1" name="name" type="java.lang.String" value="张三"></constructor-arg>
</bean>
2)通过实例工场创建
工厂设计模式:帮助创建类对象,一个工厂可以生产多个对象,且可以根据用户需求创建不同的对象。
实例工场:必须先创建工厂,然后才能生产对象
public class PeopleFactory {
public People newInstance(){
return new People(1,"测试");
}
}
在applicationContext.xml中配置工厂对象和需要创建的对象
<bean id="factory" class="com.bjsxt.pojo.PeopleFactory"></bean>
<bean id="peo1" factory-bean="factory" factory-method="newInstance"></bean>
factory-bean:工厂的id factory-method:工厂创建对象的方法名
3)通过静态工厂创建
所谓静态工厂,即不需要创建工厂,可以直接生产对象。
public class PeopleFactory {
public static People newInstance(){
return new People(1,"测试");
}
}
<bean id="peo2" class="com.bjsxt.pojo.PeopleFactory" factory-method="newInstance"></bean>