Spring 基础知识(一)基本概念 DI、IOC、AOP
- DI(依赖注入) 和IOC(控制反转)都是一种设计思想,要理解他们,让我们从coding中的一些痛点入手。
- 依赖注入 Dependency Injection :
如果A类要使用B类的一个方法,首先必须拥有B类的实例的引用,其次,在调用B类方法时,引用必须被B类的实例赋值,否则空指针。对于面对对象的java语言来说,这一场景,是极具备普遍性,的重复劳动。
所以Spring根据配置(或注解)帮我们把对象A、B、C....构造好,放到容器中,并基于配置的reference关系,帮我们完成大量的赋值操作。
早起版本采用xml配置,后面为了简化配置工作以及进一步解耦合,采用注解来定义关系。
- 控制反转 Inversion of control:
有了依赖注入,控制反转就更好理解了。对A类中引用的其他类资源的初始化以及选择,由Spring框架帮助控制。
- AOP(切面编程) 则是Spring框架服务端应用架构的一种设计和实现方案
要理解这个概念,还是要从设计的实际需求出发。当我们需要在某一些类型(某一层)的处理操作前做一些操作,又不破坏当前的代码调用链路(通常说业务代码无感知),那么就需要AOP了。例如,我们在service层常见的统一开启事务、权限过滤、加性能日志,比较经典的 ehcache 基于注解实现缓存也是一种切面。
- AOP 开发和一些基本概念:
- 切面(Aspect):
@Aspect //将spring的Component (ComponentDemoAA)声明成一个切面
@Component // 切面本身是个Sping bean
public class ThisisAAspect(){...}
- 切入点(Pointcut):在ComponentDemoAA中定义一个方法作为接入点
@Pointcut(value="execution(* com.AspectTest.service.personServerImpl.*(..))")
private void thisIsaPointCut(){}
- 通知(Advice): 有多种类型
在ComponentDemoAA中定义若干个方法作为通知对象执行
@Around(value="thisIsaPointCut()") // 环绕
private void doSomeThing1(){}
还可以是:
@Before(value="thisIsaPointCut()") // 前置
@AfterThrowing(value="thisIsaPointCut()",throwing="ex")//异常处理
@After(value="thisIsaPointCut()") // 后置
@AfterReturning(value="thisIsaPointCut()") 最终
- @Order 标识切面的优先级,越小优先级越高
- 织入(Weaving) 运行时,会通过动态代理将 切面织入调用链路
- 动态代理 Spring 中可以配置使用 JDK动态代理 还是 CGLIB 动态代理
- xml中增加配置 <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
Spring 基础知识(一)基本概念 DI、IOC、AOP的更多相关文章
- Spring基础知识
Spring基础知识 利用spring完成松耦合 接口 public interface IOutputGenerator { public void generateOutput(); } 实现类 ...
- Spring 基础知识
Spring架构简单描述 原文:https://www.shiyanlou.com/courses/document/212 Spring 概述 1. Spring 是什么 Spring是一个开源的轻 ...
- spring 基础知识复习
spring是一个分层架构,由 7 个定义良好的模块组成.Spring 模块构建在核心容器之上,核心容器定义了创建.配置和管理 bean 的方式. 组成spring框架的每个模块(或组件)都可单独存在 ...
- Spring基础知识及bean的配置
IOC与DI: IOC(inversion of control):其思想是反转资源获取的方向.传统的资源查找方式要求组件向容器发起请求查找资源.作为回应,容器适时的返回资源.而应用了IOC之后,则是 ...
- JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- Spring的俩大核心概念:IOC、AOP
1.Spring 有两个核心部分: IOC 和 Aop (1)IOC:控制反转,把创建对象过程交给 Spring 进行管理 (2)Aop:面向切面,不修改源代码进行功能增强 2.Spring 特点 ...
- Spring基础知识详解
Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring ...
- Spring基础知识之依赖注入
Spring框架的四大原则: 1)使用POJO进行轻量级和最小侵入式的开发. 2)通过依赖注入和基于接口编程实现松耦合. 3)通过AOP和默认习惯进行声明式编程. 4)使用AOP和模板(templat ...
- 1.spring基础知识讲解
引言:以下记录一些自己在使用时pringle框架时的一些自己心得合成体会时,如有侵权,请联系本博主. 1. spring基本都使用 spring是一个开源的轻量级框架,其目的是用于简化企业级应用程序开 ...
随机推荐
- jQuery的offset、position、scroll,元素尺寸、对象过滤、查找、文档处理
jQuery_offset和position var offset = $('.xxx').offset() console.log(offset.left.,offset.top)xxx相对于页面左 ...
- jQuery_$方法、属性、点击切换
jQuery_$方法 1.$.each():遍历数组或对象中的数据 2.$.trim():去除字符串两边的空格 3.$.type(obj):得到数据的类型 4.$.isArray(obj):判断是否为 ...
- kali 32位 更换 xfce4 桌面
kali 32位默认是gnome桌面,我感觉又难看又卡.下面是换xfce4的方法: 1.安装xfce4: apt install kali-defaults kali-root-login deskt ...
- Linux服务器,服务管理--systemctl命令详解,设置开机自启动
Linux服务器,服务管理--systemctl命令详解,设置开机自启动 syetemclt就是service和chkconfig这两个命令的整合,在CentOS 7就开始被使用了. 摘要: syst ...
- c#泛型约束 (where T:class)
.NET支持的类型参数约束有以下五种:where T : struct | T必须是一个结构类型where T : class ...
- win2012R2 的IIS报错HTTP404,报错在计算机上找不到服务W3SVC等等
一.背景 今天远程给客户解决IIS的默认网页浏览找不到文件夹,报错HTTP404,找了很多原因,而且也报错在计算机上找不到服务W3SVC等等,如图所示: 二.原因 试了很多方法都不可以重装IIS都不行 ...
- EF - Code First 开发方式
概述: 本节介绍通过 Code First 开发建立新数据库. 借助 Code First 可以选择使用类的特性和属性执行配置,或者使用 XML 配置文件来配置,当然也可以使用 Fluent API ...
- Could not get JDBC Connection--java
postMan上调用合同服务,后台运行错误,如下: { "timestamp": 1536203887641, "status": 500, "err ...
- 基于RabbitMQ rpc实现的主机管理
要求: 文件分布: 流程图: import pika import os import socket class Server(object): def __init__(self, queuenam ...
- oracle中“ORA-00060: 等待资源时检测到死锁” 或存储过程编译卡死 解决方法
之前在调试存储过程时,出现卡死情况,无法插入数据 解决方法 1.查看那些表被锁住: --1.查看那些表被锁住--- select b.owner,b.object_name,a.session_id, ...