spring bean创建

1. bean创建

user.class--> 无参构造方法---> 普通对象----> 依赖注入(属性赋值)--->初始化前(postcontuct)-->初始化(InitializingBean.afterPropertiesSet())-->初始化后(AOP) --->代理对象生成--> bean创建

1.1. 推断构造方法

1.默认使用无参构造

2.只有有参构造会从容器中找参数实例找不到会报错

找bean规则

  1. 根据类型找到有且只有一个bean直接使用

  2. 多个时根据名称找名称匹配的匹配相同名称返回

在实例中的多个构造方法加Autowired 告诉spring也可以

1.2. 依赖注入

首先根据类型查询注入

无法匹配一个,再根据名称注入

1.3. AOP方法增强

AOP通过动态代理技术对方法做增强

1.对切点类生成代理类

2.先执行切面方法,在执行增强方法

事物通过动态代理做对事物方法进行事物 处理

1.对有@Transactional注解类生成代理类,

2.建立事物链接

3.关闭事物自动提交

4.执行事物sql

5.手动提交

6.异常则回滚

spring 可以通过Beanpostprocessor实现类增强对bean初始化前,初始化后的增强

AbstractAutowireCapableBeanFactory#doCreateBean

=> createBeanInstance // 第1步:通过构造器或工厂方法实例化

=> populateBean // 第2步:填充属性、依赖注入

=> initializeBean // 第3步:执行 init、@PostConstruct、AOP 代理等

相关推荐
sing~~1 小时前
SpringCloud的了解和使用
后端·spring·spring cloud
随风,奔跑2 小时前
Spring Cloud Alibaba(六)-链路追踪SkyWalking
java·后端·spring·skywalking
云烟成雨TD2 小时前
Spring AI 1.x 系列【30】向量数据库:核心 API 和入门案例
java·人工智能·spring
敖正炀2 小时前
Spring 深度内核-核心容器与扩展机制-SpringFactoriesLoader 到 AutoConfiguration.imports:插件化演进
spring
敖正炀2 小时前
Spring 深度内核-核心容器与扩展机制-类型转换与数据绑定体系:ConversionService、PropertyEditor
spring
空中海2 小时前
Spring Cloud第三篇:通信篇 — OpenFeign 与负载均衡
spring·spring cloud·负载均衡
JAVA面经实录9173 小时前
Spring AI 高频开发万能 Prompt 合集 + 生产级工具类
java·人工智能·spring·prompt
JAVA面经实录9173 小时前
如何选择适合项目的「限流 / 熔断 / 降级」方案
java·spring·kafka·sentinel·guava
曹牧14 小时前
Spring:@RequestMapping注解,匹配的顺序与上下文无关
java·后端·spring
Cry丶17 小时前
架构师实战:Spring Authorization Server 落地企业级“无感” SSO(附设计映射与源码级接口剖析)
spring·spring security·oauth2.0·authorization·sso·无感登录