Spring----简介、IOC、DI与MyBatis和WEB项目的整合

一、Spring简介

Rod Johnson发明,此人是一个轮子理论(不重复造轮子)推崇者,所以设计了Spring框架提高开发效率,直接使用框架的方法。

1)Spring核心功能

1.IOC / DI :控制反转/依赖注入

2.AOP : 面向切面编程

3.声明式事务

2)Spring框架runtime(运行时环境)

Spring----简介、IOC、DI与MyBatis和WEB项目的整合

首先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)

Spring----简介、IOC、DI与MyBatis和WEB项目的整合

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>