Spring详解(0控制回转和依赖灌注AOP介绍)版权声明

原创
小哥 3年前 (2022-12-30) 阅读数 11 #大杂烩

目录

依赖注入

控制反转和依赖注入

Spring依赖注入

AOP 面向操作的编程

Spring 框架本身的四个原则

1) 使用pojo轻量化和微创开发

2) 通过依赖注入和基于接口的编程实现交付耦合。

3) 通过AOP以及声明性编程的默认习惯

4) 使用AOP和模板(template) 减少模式化代码

依赖注入
依赖注入是负责创建对象和维护对象之间依赖关系的容器。,而不是通过对象本身负责自己的构建和解决自己的依赖关系

依赖注入的目的是解耦,解释将实例变量传递到另一个对象

什么是依赖关系?是一个类Father 有一个班级在Son一个实例,则称 Father 对Son 有依赖关系

public class Father{
...

Son son;
public Father (){
Son =new Son();
}

...
}
这有几个问题:

1) 一旦Son施工方式变更,需要修改Father中的new Son() 代码的一部分

2) 想要测试不同的Son对象对Father更困难的影响,因为Son的初始化部分已写入Father在施工方法中

3) 如果new Son() 需要很长时间,测试时更麻烦。

因此,可以进行以下修改。

public class Father{
...

Son son;
public Father ( Son  son){
this.son=son;
}

...
}
修改后的代码,在构造Fatherdui对象之前,已经有一个已初始化。Son对象,

就像这不是他们自己主动初始化依赖关系一样,而是外部传入依赖项的方式,是依赖注入

控制反转

控制反转是面向对象编程中的一个设计原则。,用于查看底部代码之间的耦合。,其基本思想是: 借助

具有依赖关系的对象之间的第三方实现解耦

假设有四个对象,A,B,C,D ,他们需要相互依赖才能正常工作,对象有问题,整个系统停止。,它叫

相互耦合 :

原系统

控制反转后的系统(解耦)

现在让我们比较控制反转前后的系统。

对象A依赖C,如果A需要在运行中使用。C的时候,必须主动创造C或使用已创建的C对象,但不管它是不是被创造出来的,还是使用,主动权在A自己手中

但是引入IOC容器之后,A与C无直接接触,如果A使用到C的时候,IOC将主动创建对象C,然后注射A需要的地方, 对象A获取从属对象C的过程,成为被动获取,这是控制的倒置。

spring中的控制反转是通过依赖注入实现的

控制反转和依赖注入
控制反转是一种想法,依赖注入是一种模式

Spring依赖注入
Spring的IOC容器 是(ApplicationContext),复制创建bean,并通过容器传递函数类。Bean注入所需的bean中

Spring 提供的注射方法有: xml,注解,java配置

使用注释的优点是减少代码的编写。,更快的开发

bean常见注意事项

@Component

@Service  业务逻辑层(service,通常放在实现类中)

@Repository  数据访问层使用(dao)

@Controller 表示层使用(例如sprispringMVC中)

注入bean常见注意事项

@Autowired : spring提供的意见

@Resource

spring4.* 推荐使用java配置

java配置已完成@Configuration和@Bean来实现的

@Configuration 将类声明为配置类,相当于1springpeiz配置的xml文件

@Bean 方法的注释,声明当前方法返回Bean

AOP 面向操作的编程
spring 的AOP存在的目的是脱钩,AOP可以让一组类共享相同的行为

例如  oop中,将功能封装到对象中,但有时会有重复的代码,假设对象A,Btong还需要对日志进行操作,封装之后,出现重复代码,此时,可以将相同的日志操作提取到实用程序类中C中,让两个对象调用,但是对象A和B就与gong工具类C耦合了

AOP的作用是,在需要的时候,随意添加代码

有两种常见的方法: 静态与动态代理

静态代理使用AsprctJ ,其操作模式为,编译期间生成AOP的代理类,它也被称为编译增强。

通过动态代理springAop在内存中为方法临时生成AOP对象,此对象包括目标对象的所有方法,在相应的切点进行增强操作

SpringAop两种动态代理方式 JDK动态代理也是cglib

JDK基于反射机制的动态代理,要求代理类必须实现接口

cglib基于继承,因此,如果定义了类final,无法使用cglib执行动态代理


作者:Hero_孙
来源:CSDN
原文:https://blog.csdn.net/aa15237104245/article/details/81169392
版权声明:本文为博主原创文章,转载请附上博客链接!

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除