Spring基础知识

文章介绍了优秀架构的评判标准,强调高内聚和低耦合的重要性。接着深入讲解了Spring框架的IOC(控制反转)和DI(依赖注入)概念,以及它们如何实现代码解耦。此外,还阐述了AOP(面向切面编程)在减少代码重复和提升业务逻辑独立性方面的作用。Spring通过XML配置或注解实现IOC和DI,提供了对象管理和解耦的能力,而AOP则用于增强代码的复用性和简化事务处理。
摘要由CSDN通过智能技术生成

一、前言

1、什么样的架构,我们认为是一个优秀的架构?

判断准则:可维护性好,可扩展性好,性能。最直接的体现就是高内聚,低耦合。

  • 高内聚:就是尽量将代码写在与之功能描述一致的模块中。如User表的操作写在UserDAO里面,不要写在非UserDAO的类里面。
  • 低耦合:就是尽量减少类与类之间的直接关系。
  • 直接关系:Controller层依赖Service层,在Controller层直接new Service层的类的对象;Service层依赖Dao层,在Service层直接new Dao层的对象。

2、Spring的控制反转/依赖注入(IOC/DI

Spring框架就是通过IoC/DI(控制反转/依赖注入)实现程序的解耦。从而提高程序的维护性和扩展性。

二、Spring概述

1、Spring框架

Spring框架提供涵盖了JavaEE开发的表示层,服务层,持久层的所有组件功能。

  • Spring是一个一站式的企业级(JavaEE)开发框架,意味着,仅仅使用一个Spring框架就可以满足JavaEE开发的表示层,服务层,持久层的开发。
  • Spring强调的理念是:轻量级。意味着Spring提供的功能模块,除了内核模块以外,其他功能模块开发人员可以选择性使用。
  • Spring框架在现实开发中,主要的功能是整合第三方框架。

三、Spring IOC和AOP(重点)

  •  Spring 的主要作用就是为代码“解耦”,降低代码间的耦合度就是让对象和对象(模块和模块)之间关系不是使用代码关联,而是通过配置来说明减轻对项目模块之间的管理, 类和类之间的管理, 帮助开发人员创建对象,管理对象之间的关系。
  • Spring 根据代码的功能特点,使用 Ioc 降低业务对象之间耦合度。IoC 使得主业务在相互调用过程中,不用再自己维护关系了,即不用再自己创建要使用的对象了。而是由 Spring容器统一管理,自动“注入”,注入即赋值。
  • AOP 使得系统级服务得到了最大复用,且不用再由程序员手工将系统级服务“混杂”到主业务逻辑中了,而是由 Spring 容器统一完成“织入”。

1、Spring核心功能 IOC控制反转

(1)什么是IOC

  • 控制: 创建对象,对象的属性赋值,对象之间的关系管理。
  • 反转: 把原来的开发人员管理,创建对象的权限转移给代码之外的容器实现。 由容器代替开发人员管理对象。创建对象,给属性赋值。

(2)为什么要使用IOC

目的就是减少对代码的改动, 也能实现不同的功能。 实现解耦合。 

(3)IOC的技术实现——DI依赖注入

Spring 容器是一个超级大工厂,负责创建、管理所有的 Java 对象,这些 Java 对象被称为 Bean。Spring 容器管理着容器中 Bean 之间的依赖关系,Spring 使用“依赖注入”的方式来管理 Bean 之间的依赖关系。使用 IoC 实现对象之间的解耦和。Spring是使用的DI实现了IOC的功能, Spring底层创建对象,使用的是反射机制。

(4)DI依赖注入

DI:依赖注入,表示创建对象,给属性赋值。

1)DI的实现有两种:

  • 在Spring的配置文件中, 使用标签和属性完成,叫做基于XML的DI实现
  • 使用Spring中的注解,完成属性赋值, 叫做基于注解的id实现

2)DI的语法分类:

  •  set注入(设置注入): Spring调用类的set方法,在set方法可以实现属性的赋值
  •  构造注入,Spring调用类的有参数构造方法,创建对象。在构造方法中完成赋值

3)下面重点讲讲基于注解的实现方式(DI)

  • 定义 Bean 的注解@Component

  •  简单 类型属性注入@Value

使用该注解完成属性注入时,类中无需 setter。当然,若属性有 setter,则也可将其加到 setter 上。

  • byType 自动注入@Autowired

使用该注解完成属性注入时,类中无需 setter。当然,若属性有 setter,则也可将其加到 setter 上。

  •  byName 自动注入@Autowired 与@Qualifier

 ​​​​​

  • JDK 注解@Resource 自动注入

 

2、Spring核心功能AOP面向切面编程

(1)AOP概述

AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程,可通过运行期动态代理实现程序功能的统一维护的一种技术。AOP 是 Spring 框架中的一个重要内容。利用 AOP
可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

 (2)AOP的实现

 aop是一个规范,是动态的一个规范化,一个标准aop的技术实现框架:
1)spring:

  • spring在内部实现了aop规范,能做aop的工作。
  • spring主要在事务处理时使用aop。
  • 我们项目开发中很少使用spring的aop实现。 因为spring的aop比较笨重。

2)aspectJ: 一个开源的专门做aop的框架。spring框架中集成了aspectj框架,通过spring就能使用aspectj的功能。aspectJ框架实现aop有两种方式:

  • 使用xml的配置文件 : 配置全局事务
  • 使用注解,我们在项目中要做aop功能,一般都使用注解, aspectj有5个注解:前置通知、后置通知、环绕通知、异常通知、异常通知。

(3)AOP的好处

  • 减少重复
  • 专注业务

参考:

spring基础知识(IOC、DI、AOP)_spring di_知更鸟女孩的博客-CSDN博客

快速入门Spring第一天(共四天) - 知乎 (zhihu.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金州饿霸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值