Spring
Spring 是什么?
[1] Spring 框架是一个开放源代码的 JavaEE 应用程序框架。
[2] Spring 是针对 bean 的生命周期进行管理的轻量级容器。
[3] Spring 是 Rod Johnson 发起。
Spring 的核心部分是什么?
[1] Spring 有两个核心部分:IOC 和 AOP
IOC:控制反转,把创建对象过程交给 spring 进行管理。
AOP:面向切面,不修改源代码进行功能增强。
Spring 的组成有什么?
Spring 框架主要由 七 部分组成,
[1] Spring Core
[2] Spring ADF
[3] Spring DAO
[4] Spring Context
[5] Spring Web
[6] Spring ORM
[7] Spring Web MVC
Spring 的特点:
[1] 方便解耦,简化开发。
[2] AOP 编程支持。
[3] 方便程序测试。
[4] 整合其它的框架
[5] 方便进行事物操作。
[6] 降低 Java API 使用难度。
简单的一个案例
使用 Spring 去创建一个对象,而 Spring 需要运用到 xml 文件。
//使用者类
package com.bird.spring;
public class User {
// 创建一个 睡觉的方法
public void sleep(){
System.out.println("我在睡觉呢!");
}
}
<!-- xml文件内容 -->
<?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 对象创建一个 id userXml-->
<bean id="userXml" class="com.bird.spring.User"></bean>
</beans>
//spring5测试类
package com.bird.spring.test;
//导入包
import com.bird.spring.User;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestSpring5 {
// @test 在这里需要使用 junit.test 的包 如过没有将会出现报错。
@Test
public void testAdd(){
// [1]加载 spring 配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("bean01.xml");
// [2]获取配置创建的对象
User firstUser = context.getBean("userXml", User.class);
System.out.println(firstUser);
firstUser.sleep();
}
}
[3] IOC操作 Bean 管理(基于xml)
[4] IOC操作 Bean 管理(基于注解)
什么是IOC?
[1] 控制反转,把对象的创建和对象之间的调用过程,赋予 Spring 进行管理。
[2] 使用 IOC 目的:降低地耦合度
IOC的底层原理
[1]xml 解析
[2]工厂模式
[3]反射
IOC接口(BeanFactory)
[1] IOC 思想基于 IOC 容器完成,IOC容器底层就是对象工厂。
[2] Spring 提供 IOC 容器两种方式(两个接口):
BeanFactory: IOC容器基本实现,是 Spring 内部的使用接口,不提供开发人员进行使用。
ApplicationContext:BeanFactory 接口的子接口,提供更多强大的功能,一般由开发人员进行使用。
注意:
两者的独特性:
[1] BeanFactory:加载配置文件时,不会创建对象。在获取对象或者使用对象时候,才会创建对象。(随用随创)
[2] ApplicationContext:加载配置文件时候就会把在配置的文件对象进行创建。(随载随创)
[3] ApplicationContext 接口有实现类
FileSystemXmlApplicationContext:它需要加入的是带有盘符的地址。
ClassPathXmlApplicationContext:它需要加入的是带有类路径的地址。