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

相关推荐
Terra.K5 小时前
Spring AI day1(SSE+AI)
java·人工智能·spring·springai
Wang's Blog9 小时前
Java框架 SpringCloud 快速入门: 路由断言工厂
java·spring·spring cloud
Q264336502311 小时前
【有源码】基于SpringBoot+Vue的博物馆展览与服务一体化平台-java博物馆数字化展品展示与交互平台设计
java·vue.js·spring boot·spring·毕业设计·javaweb·课程设计
大圣编蚕12 小时前
Spring AOP 失效排查:从原理到实战的完整指南
java·后端·spring
EatFan12 小时前
MCP 从概念到落地:Java(Spring AI Alibaba)与 .NET 双栈接入实操对比
java·人工智能·后端·spring·.net·java后端·mcp
vx_Biye_Design13 小时前
springboot小区管理系统68491-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express
liangsheng_g13 小时前
SpringAOP两套代理创建路线设计哲学与开源实践
spring·开源·代码规范
专业程序开发源13 小时前
springboot外卖系统94294-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
谢亮_vipxieliang1 天前
Spring Cloud 服务治理入门:注册发现、配置中心、网关限流、熔断降级与分布式一致性方案
分布式·spring·spring cloud
专业程序开发源1 天前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计