简述 spring中如何基于注解添加bean 和装配bean
1、首先要在Spring中配置开启注解扫描
2、在具体的类上增加具体的注解
3、spring中通常使用@autowired 或者是Resource等注解进行bean的装配
总结:
装配流程:
1、实例化:spring容器根据配置或者注解创建Bean的实例
2、依赖注入:Spring容器根据bean定义,注入所需的依赖
3、初始化:Bean创建并注入依赖后,Spring会调用Bean的初始化方法(如果有定义的话)
4、Bean可以被容器管理并在应用中使用
请写出spring中常用的依赖注入方式:
1、通过setter方法注入
2、通过构造函数方法注入
总结:
setter:
1、setter 无法被修饰为不可变的
2、我们可以接收一个不存在的bean(required=false)
构造函数:
1、可以修饰为不可变的final;
2、依赖注入的bean一定是存在的(构造函数可以通过接收一个optional ,原则上不可以,但是通过这种方式实现传递一个不存在的bean )
ioc在代码块的体现:
1、bean初始化的注解(bean装配的注解)
2、依赖注入的注解(不需要手动new 一个对象 手动实例化对象,创建对象的过程由spring框架的ioc容器来执行,最终形成这个效果称为控制反转)
ioc的设计:
1、封装对象创建和生命周期管理
2、依赖注入
依赖注入是ioc容器控制反转的一种方式,容器负责将对象所需外部资源,注入到对象内部,而不是对象自己主动创建或者查找依赖
3、springioc容器通过大量使用反射机制创建和操作,通过反射容器可以在运行时动态创建对象实例。通过访问字段私有字段和方法,从而实现对对象的管理和依赖注入。
4,配置元数据,对象的配置信息可以通过xml文件,注解或者java配置类等形式提供。
这些配置元数据包括对象的创建,依赖关系和其他生命周期相关的信息,spring容器启动时,ioc容器会读取这些配置元数据,并根据这些信息创建和管理对象。
5、容器内部结构:spring ioc容器内部维护了一个bean工厂,负责创建和管理bean的实例,ioc容器会根据配置信息,创建bean的定义(beandefine)和实例话bean,为确保每一个bean都能获得它所需的bean(依赖),ioc容器还负责维护bean之间的依赖关系。
6、作用域
springioc容器通过封装对象的创建和生命周期管理,使用依赖注入来解耦对象之间的依赖关系,利用反射和配置数据源来动态的创建和管理对象。
AOP(切面编程) 是一种编程思想
它的目的是为了提高代码的模块化成都,也就是在不修改现有逻辑代码的情况下,动态的去添加或者修改代码的执行逻辑,所以我们可以见到那的理解为springAOP是用来扩展原有业务逻辑的一种思想。
Aop动态切换数据源,