一. Spring 框架简介及官方压缩包目录介绍
- 主要发明者:Rod Johnson
- *理论推崇者:
2.1 *理论:不用重复发明*.
2.2 IT 行业:直接使用写好的代码.
- Spring 框架宗旨:不重新发明技术,让原有技术使用起来更加方便.
- Spring 几大核心功能
4.1 IoC/DI控制反转/依赖注入
4.2 AOP面向切面编程
4.3 声明式事务.
- Spring 框架runtime
5.1 test: spring 提供测试功能
5.2 Core Container:核心容器.Spring 启动最基本的条件.
5.2.1 Beans : Spring 负责创建类对象并管理对象
5.2.2 Core: 核心类
5.2.3 Context: 上下文参数.获取外部资源或这管理注解等
5.2.4 SpEl: expression.jar
5.3 AOP: 实现aop 功能需要依赖
5.4 Aspects: 切面 AOP 依赖的包
5.5 Data Access/Integration : spring 封装数据访问层相关内容
5.5.1 JDBC : Spring 对JDBC 封装后的代码.
5.5.2 ORM: 封装了持久层框架的代码.例如Hibernate
5.5.3 transactions:对应spring-tx.jar,声明式事务使用.
5.6 WEB:需要spring 完成web 相关功能时需要.
5.6.1 例如:由tomcat 加载spring 配置文件时需要有spring-web包
6.Spring 框架中重要概念
6.1 容器(Container): Spring 当作一个大容器.
6.2 BeanFactory 接口.老版本.
6.2.1 新版本中 ApplicationContext 接口, 是 BeanFactory 子接口.BeanFactory 的功能在ApplicationContext 中都有.
7.从Spring3 开始把Spring 框架的功能拆分成多个jar.
7.1 Spring2 及以前就一个jar
二.Spring IoC 的概念
1 中文名称:控制反转(Inversion of Control)
2.IoC 是什么?
2.1 IoC 完成的事情原先由程序员主动通过 new 实例化对象事情,转交给Spring 负责.
2.2 控制反转中控制指的是:控制类的对象.
2.3 控制反转中反转指的是转交给Spring 负责.
2.4 IoC 最大的作用:解耦.
2.4.1 程序员不需要管理对象.解除了对象管理和程序员之间的耦合.
三.Spring 环境搭建
- 导入jar
1.1 四个核心包 + 一个日志包(commons-logging)
1.2 idea编译器: 整体配置后 的 Spring项目
2.在src 下新建 applicationContext.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" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- id表示获取到的对象的标识;class表示创建那个类的对象; --> <bean id="peo" class="com.test.People"/> </beans>
2.1 文件名称和路径自定义.
2.2 记住 Spring 容器 ApplicationContext,applicationContext.xml 配置的信息最终存储到了AppliationContext 容器中;
2.3 spring 配置文件是基于schema (模式)
2.3.1 schema 文件扩展名.xsd
2.3.2 把schema 理解成DTD 的升级版.
2.3.2.1 比DTD 具备更好的扩展性,更优秀的语法检查器
2.3.3 每次引入一个xsd 文件其实是一个namespace(xmlns)
2.4 配置文件中只需要引入基本schema
2.4.1 通过<bean/> 创建对象.
2.4.2 默认配置文件被加载时创建对象.
3.编写测试方法
3.1 getBean(“<bean>标签id 值”, 返回值类型);
3.1.1 如果没有第二个参数, 默认返回值的类型是Object.
3.2 getBeanDefinitionNames(),返回Spring 容器中目前所有管理的所有对象.
4.编写bean 和 测试类
package com.test; public class People { private int id; private String name; public People() { System.out.println("执行People的构造方法!"); } @Override public String toString() { return "People{" + "id=" + id + ", name='" + name + '\'' + '}'; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
测试类test01 如下,使用Spring配置文件进行新建对象:
package com.test; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.ApplicationContext; public class test01 { public static void main(String[] args) { // People people=new People(); ApplicationContext ac=new ClassPathXmlApplicationContext("applicationcontext.xml"); People people = ac.getBean("peo", People.class); System.out.println(people); // String[] names=ac.getBeanDefinitionNames(); // System.out.println("输出Spring所有的管理的对象"); // for(String string:names){ // System.out.println(string); // } } }