1. Spring 概念

1.1 轻量、开源

1.2 解决企业应用开发的复杂性

1.3 核心 IOCAOP

  1. IOC: 控制反转,把创建对象过程交给Spring进行管理
  2. Aop: 面向切面,不修改源代码进行功能增强

1.4 特点

  1. 方便解耦、简化开发
  2. Aop编程支持
  3. 方便程序测试
  4. 方便集成各种优秀框架
  5. 方便事物操作 …

1.5 入门案例

  1. 下载 spring5 的jar包
  2. idea 新建java普通项目并导入相关包(基础)

  3. 创建一个普通类 User
1
2
3
4
5
6
7
package top.ghovos.spring5;

public class User {
public void add(){
System.out.println("add ......");
}
}
  1. 创建配置文件bean1.xml
1
2
3
4
5
6
7
<?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">
<!--配置User类对象创建-->
<bean id="user" class="top.ghovos.spring5.User"></bean>
</beans>
  1. 创建测试类 TestSpring5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package top.ghovos.spring5.testdemo;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import top.ghovos.spring5.User;

public class TestSpring5 {
@Test
public void testAdd(){
//1 加载配置文件
ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");

//2 获取配置创建的对象
User user = context.getBean("user", User.class);

System.out.println(user);
user.add();
}
}
  1. 各个文件的关系

2. IOC 容器

2.1 IOC 底层原理

  1. xml解析、工厂模式、反射

    1. 配置xml文件
    1
    <bean id="dao" class="top.ghovos.spring5.User"></bean>
    1. 有seriece类和dao类,创建工厂类
    1
    2
    3
    4
    5
    6
    7
    8
    //创建工厂类
    class UserFactory{
    public static UserDao getDao(){
    String classValue = class属性值; //1. 通过xml解析
    Class clazz = Class.forName(classValue); //2. 通过反射创建对象
    return (UserDao)clazz.newInstance(); //初始化对象并返回
    }
    }

2.2 IOC 接口(BeanFactory)

1. IOC思想基于IOC容器完成,IOC容器底层就是对象工厂

2. Spring 提供IOC容器实现的两种方式

  1. BeanFactory : IOC容器的基本实现,是Spring内部的使用接口,不提供开发人员使用
    • 加载配置文件的时候不会创建对象,对象使用才会创建对象
  2. ApplicationContext BeanFactory 的子接口,提供更多强大的功能,一般由开发人员使用
    • 加载配置文件时就会创建对象
  3. ApplicationContext 接口有实现类

2.3 IOC 操作Bean管理(基于xml)

1. 什么是Bean管理

  1. Bean 管理只两个操作
    1. sping 创建对象
    2. spirng 注入属性 (如: getter 或 setter)

2. Bean 管理的操作两种方式

  1. 基于xml配置文件方式

    • DI: 依赖注入, 就是注入属性
    1. 创建对象
    1
    2
    3
    4
    <bean id = "user" class = "top.ghovos.spring5.Book" name=""><bean>
    <!--id: 唯一标识-->
    <!--class: 类全路径(包类路径)-->
    <!-- 创建对象时候,默认也是**无参数构造**方法完成对象创建-->
    1. 用set方式主语注入属性
    1
    2
    3
    4
    5
    6
    7
    8
    // 1. 使用set方式注入
    public void setBook(String bName){
    this.bName=bName;
    }

    public void setBookAuthor(String bAuthor){
    this.bAuthor=bAuthor;
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <!--配置User对象-->
    <bean id="book" class="top.ghovos.spring5.Book">
    <!--使用property完成属性注入-->
    <!--注意 用property 要完成**上面** set方法(只能是set方法) 后配置-->
    <property name="bName" value="someBook"></property>
    <property name="bAuthor" value="someOne"></property>
    <!--
    name: 属性名称
    value:属性值
    -->
    </bean>
    1. 使用有参构造方式注入
  2. 基于注解方式方式

2.4 IOC 操作Bean管理(基于注解)

3. Aop

4. JdbcTemplate

5. 事务管理

6. Spring 5 新特性