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 代理等

相关推荐
雷一言说6 小时前
Spring AI 2.0 Tool Search:工具多了,只把相关的发给模型
spring
郭小李8 小时前
spring mvc 工作流程
java·spring·mvc
乌暮8 小时前
综合案例:宠物电商系统
java·开发语言·spring·mvc·restful·1024程序员节
万联WANFLOW8 小时前
Kimi K3.1 Pro 接口接入指南:模型选型、费用计算与零数据保留
java·spring boot·python·安全·spring·大模型
学到老活到老9 小时前
Spring 事务怎样生效?为什么加了 @Transactional 仍不回滚?
java·spring
学到老活到老9 小时前
Spring 怎样创建 Bean?@Autowired 在哪一步生效?
java·spring
木头科技9 小时前
【AI 工程化第十八篇】Spring AI 语音 Agent 实战:实时转写、WebSocket、流式 TTS 与打断机制
java·人工智能·安全·spring·性能优化
步行cgn9 小时前
Spring MVC 核心配置文件详解:springmvc.xml 每一行配置的意义
xml·spring·mvc
Flynn Liang11 小时前
Spring AI ChatClient 详解:system/user/assistant 角色、call 与 stream 到底怎么选
java·人工智能·spring·springai·流式输出·chatclient·java接入大模型
萧瑟余晖11 小时前
Spring Data Redis详解
spring·面试