spring 运行原理+IOC/AOP(详解)+Spring框架的常用注解(详解)

Spring框架的常用注解

使得自定义的类被Spring管理对象,确保类在组件扫描的包下,且在类上添加组件注解
(认识4个基础的组件注解
	@Component , @Controller , @Service , @Repository)

(Spring的自动装配注解(装配Bean的注解)
	@Autowired @Resource)
	不同点:①autowried是Spring的注解,而Resource则是javax.annotation的注解
	②autowired默认按照类型(byType)进行注入,而Resource默认按照名称(byName)进行注入)
	
(Spring配置类注解
	@Configuration)

(关于mapper包组件扫描
	@Mapper , @MapperScan , @ComponentScan)
	
(启动类注解
	@SpringBootApplication)
	
(特别理解
- 在属性上添加`@Autowired`,则Spring会自动尝试为此属性赋值,是否成	 功,取决于Spring容器中是否存在合适的对象
- 理解组件之间的调用关系
  Controller >>> Service >>> Repository
- 理解基于接口的编程的思想

- 在@SpringBootApplication的声明上有@ComponentScan,则			@SpringBootApplication具有@ComponentScan的效果。
- 在@SpringBootApplication的声明上有@ComponentScan,则			@ComponentScan可称之为@SpringBootApplication的元注解。
)

2. spring 运行原理

1.1 内部最核心的就是IOC了,控制反转/也叫动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,根据xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。       
1.2 Spring还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。这些都是通过 配置类达到的。
    
1.3 Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置 内部通过反射去动态的组装对象)

3. 什么是Spring IOC

Spring的控制反转(动态注入):把一个类放入到spring容器中,对象的创建、初始化、销毁等工作交给spring容器来做。由spring容器控制对象的生命周期。

/**IOC:控制反转/依赖注入*/
先说一下IOC吧,IOC就是控制反转也可以叫做依赖注入。控制权由本身转向容器,由容器根据配置文件去创建实例并创建各个实例之间的依赖关系,在spring中bean工厂创建的各个实例叫做bean。
    
IOC其实就是动态注入,让对象的创建不用去new了,可以自动生产,其实这里边用的就是java的反射机制,通过反射在运行时动态的去创建、调用对象。

spring就是根据配置文件在运行时动态的去创建对象,并调用对象的方法的。

4. Spring AOP的机制及原理

AOP把系统分为两部分,核心关注点和横切关注点。
核心主要处理业务逻辑,横切主要是权限验证,日志,事物处理等。

AOP主要由:方面(Aspect)一个关注点的模块化,这个关注点实现可能另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用Spring的 Advisor或拦截器实现

/**AOP:面向切面编程*/
	/**1.原理*/
其次就是AOP,AOP就是面向切面编程,其实就是静态代理和动态代理。
静态代理就是针对每一个类编写一个代理类,或者针对某个接口编写代理类。
    
AOP最主要的就是动态代理,为某一个对象,进行监督和控制,也就是在调用这个类对象的具体方法的前后调用你指定的模块,从而达到对一个模块扩充的功能,这些都是通过我们的配置类达到的。
	/**2.作用*/    
    AOP作用:提供声明式服务,允许用户实现自定义切面,在不改变原有的代码情况下增加新的功能。
    /**3.AOP实现*/
	1.通过SpringAPI实现;
	2.使用注解实现;
	3.自定义来实现;
    /**4.AOP的重要性*/
 	Spring AOP将公共的业务(如日志、安全、事务等)和领域业务结合,当执行领域业务时,会把公共业务加进来,实现公共业务的重复利用,领域业务变得更加纯粹,让我们专注于领域业务,其本质就是动态代理。
    /**5.AOP的应用*/   
    持久换管理、事务管理、安全管理、日志管理、调试管理等;
    /**6.AOP的概述与术语(没学过)*/  
        方面(Aspect): 一个关注点的模块化,此关注点可实现另外横切多个对象;
		连接点(UoinPoint): 程序执行过程中明确的点,eg:方法的调用或特定的异常抛出;
		通知(Advice): 在特定连接点,AOP框架的执行动作,各类型的通知;
		切入点(Pointcut): 指定一个通知将被引发的一系列连接点的集合;
		引入(Introduction): 添加方法或字段到被通知类,Spring允许引入新的接口到任何被通知的对象;
		目标对象(Target Object): 包含连接点的对象,也被称作被通知或被代理对象;
		AOP代理(AOP Proxy): Aop框架创建对象,包含通知,在Spring中AOP代理有两种:1.Jdk动态代理(基于接口);2.CGLIB代理(基于类)。一个动态代理一般代理某一类业务,一个动态代理可以代理多个类;
编织(Weaviong): 组织方面来创建一个被通知对象,可在编译时完成,也可在运行时完成;   

4. Spring IoC与DI联系

(IOC控制反转(动态注入):SpringIOC负责创建对象,管理对象。通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。)

Spring框架通过DI完善的实现了IoC,所以,DI是一种实现手段,IoC是需要实现的目标。

猜你喜欢

转载自blog.csdn.net/m0_71202849/article/details/126720405