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

相关推荐
云烟成雨TD14 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
Java成神之路-15 小时前
SpringMVC 响应实战指南:页面、文本、JSON 返回全流程(Spring系列13)
java·spring·json
砍材农夫15 小时前
spring-ai 第六模型介绍-聊天模型
java·人工智能·spring
云烟成雨TD15 小时前
Spring AI Alibaba 1.x 系列【5】ReactAgent 构建器深度源码解析
java·人工智能·spring
Flittly17 小时前
【SpringAIAlibaba新手村系列】(15)MCP Client 调用本地服务
java·笔记·spring·ai·springboot
Flittly17 小时前
【SpringAIAlibaba新手村系列】(14)MCP 本地服务与工具集成
java·spring boot·笔记·spring·ai
mfxcyh17 小时前
基于xml、注解、JavaConfig实现spring的ioc
xml·java·spring
Flittly17 小时前
【SpringAIAlibaba新手村系列】(13)Tool Calling 函数工具调用技术
java·spring boot·spring·ai
xdscode17 小时前
Spring 依赖注入方式全景解析
java·后端·spring