这里写目录标题
- Spring框架
-
- 一.Spring是什么
- 二.Spring优点
-
- 1.轻量级
- 2.非侵入式
- 3.IOC
- 4.AOP Aspect(切面) Oriented Programming
- 5.一站式
- 三.Spring体系结构
- 四.基本Spring搭建
Spring框架
一.Spring是什么
spring于2003年兴起的一个轻量级的IOC和AOP的java开发框架,为了简化企业级开发而生的
二.Spring优点
1.轻量级
Spring 框架使用的 jar 都比较小,一般在 1M 以下或者几百 kb。Spring 核 心功能的所需的 jar 总共在 3M 左右。 Spring 框架运行占用的资源少,运行 效率高
2.非侵入式
编写一些业务类的时候不需要继承spring特定的类,通过配置完成依赖注入后就可以使用,此时spring没有侵入到我们的业务代码里User extends HttpServlet(侵入式)
3.IOC
即Inversion of Control,缩写为IOC,就是由Spring IOC容器管理对象,而非传统实现中由程序代码直接操控
控制反转–》把什么的控制权 反转 给谁 以前写代码,在哪用在哪new
现在:
ApplicationContext app = new ClassPathXmlApplicationContext("spring.xml");User user = (User) app.getBean("user");
解释:
**ApplicationContext:**org. springframework. context. Application Context接口代表着 Spring IOC容器,它负责实例化、配置和组装bean
getBean:通过指定的id获取配置的Spring.xml管理的bean对象
4.AOP Aspect(切面) Oriented Programming
通过Spring提供的AOP功能,方便进行切面的编程,许多不易用传统OPP 实现的功能可以通过AOP轻松应付在Spring中,开发人员可以从繁杂的事务管理代码中解脱出来,通过声方式灵活的进行事物的管理,提高开发效率和质量
一个例子:
开发出了第一版程序 修saveStudent(){ } 改原来的代码
绑定(配置)
savelog(){}
后来要在第一版的基础上添加功能(保存日志, 管理实务 sqlseesion.commit())
AOP的思想是 可以帮我们动态代理的调用,而不需要修改源代码
5.一站式
它是一个后端管理架构框架,及基础容器,数据访问(jdbc,管理事务),web(Servlet),AOP为一身的一站式框架
三.Spring体系结构
- Core Container(核心容器):
- Beans: 管理 Beans
- Core: Spring 核心
- Context: 配置文件
- ExpressionLanguage: SpEL 表达式AOP(切面编程)
- AOP 框架: Aspects
- Data Access(数据库整合):
- JDBC, ORM, OXM, JMS, Transaction (事务)
- Web(MVC Web 开发):
- Web, Servlet, Portlet, Struts
- Test(Junit 整合)
四.基本Spring搭建
四步:
? 第一步: 导入jar
? 第二步: 创建类
? 第三步: 创建spring.xml配置文件
第四步:第四部: 测试spring创建new ClassPathXmlApplicationContext("spring.xml"); spring容器获取spring创建的bean对象
第一步:
第二步:
package com.ffyc.spring.model;public class User {
private String name;private Integer age;public String getName() {
return name;}public void setName(String name) {
this.name = name;}public Integer getAge() {
return age;}public void setAge(Integer age) {
this.age = age;}}
第三步:
第四步:
package com.ffyc.spring.test;import com.ffyc.spring.model.User;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test1 {
public static void main(String[] args) {
/* User u = new User();*//*ApplicationContext是spring的一个底层定义的接口,定义了一些规范ClassPathXmlApplicationContext() 是spring中一个具体落地实现的类(创建并管理对象)spring思想: IOC 把生成对象的控制权 反转给 spring框架在程序中需要对象的时候,直接从spring容器中获取即可(依赖注入)*/ApplicationContext app = new ClassPathXmlApplicationContext("spring.xml");// User user = (User) app.getBean("user");User user1 = app.getBean("user",User.class);User user2 = app.getBean("user",User.class);System.out.println(user1);System.out.println(user2);}}
IOC(控制反转)
读作“反转控制(Inverse of Control)”更好理解,不是什么技术,而是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理IOC 容器是具有依赖注入功能的容器,负责对象的实例化、对象的初始化,对 象和对象之间依赖关系配置、对象的销毁、对外提供对象的查找等操作,对象 的整个生命周期都是由容器来控制。我们需要使用的对象都由 ioc 容器进行管 理,不需要我们再去手动通过 new 的方式去创建对象,由 ioc 容器直接帮我 们组装好,当我们需要使用的时候直接从 ioc 容器中直接获取就可以了。
IOC反控:
正控:若要使用某个对象,需要自己区去负责对象的创建
反控:若要使用某个对象,只需要从Spring容器中获取需要使用的对象,不关心对象的创建过程,也就是把创建对象的控制权反转给了Spring框架。
目的:降低耦合度
底层实现方式:解析xml/扫描注解标签+工厂模式+反射机制