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

相关推荐
BUG指挥官16 小时前
Sa-Token和Spring Security对比
java·后端·spring
geminigoth17 小时前
Spring AI Alibaba 入门开发一(备份)
java·人工智能·spring
xbgRS19 小时前
spring整合mybaits
java·spring·mybatis
ruleslol20 小时前
静态依赖注入 VS 动态依赖查询
spring
墨雨晨曦881 天前
Spring AI总结
java·人工智能·spring
用户3126874877201 天前
Spring Boot 异常处理到底怎么玩的?从 DispatcherServlet 到全局兜底的全链路拆解
spring
不才不才不不才1 天前
Spring 源码系列(17): HandlerMapping 与 HandlerAdapter 两大体系
java·后端·spring
(轻舟已过万重山)1 天前
第40章 Spring AI 实战:企业级 AI 应用架构
人工智能·spring·架构
堕落年代2 天前
Ollama CPU 推理大提示词优化实测报告(细致化数据版)
java·后端·spring
cfm_29142 天前
基于OAuth2.0实现微服务SSO单点登录
后端·spring·微服务·架构