当前位置: 代码迷 >> 综合 >> Spring(概述,五大优点,体系结构,Spring的第一个搭建)
  详细解决方案

Spring(概述,五大优点,体系结构,Spring的第一个搭建)

热度:69   发布时间:2023-11-28 02:32:27.0

这里写目录标题

  • 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/扫描注解标签+工厂模式+反射机制

  相关解决方案