当前位置: 首页 > article >正文

Spring依赖注入详解

1.set注入

 

 启动容器后看看到底能不能拿到teacherService的值。可以看到拿到了值。我们具体来分析怎么注入的

 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#populateBean

发现pvs里面有一个我们自己set的值 

 

直接进行属性赋值。

org.springframework.beans.factory.support.BeanDefinitionValueResolver#resolveValueIfNecessary

org.springframework.beans.factory.support.BeanDefinitionValueResolver#resolveReference

直接从容器中获取,然后进行属性赋值

 

 真正进行属性赋值:

 org.springframework.beans.AbstractPropertyAccessor#setPropertyValues(org.springframework.beans.PropertyValues, boolean, boolean)

问题1:如果set方法乱写可以注入吗?

 不行,会报错,我们看看具体在哪里报错

 

org.springframework.beans.AbstractNestablePropertyAccessor#setPropertyValue(org.springframework.beans.AbstractNestablePropertyAccessor.PropertyTokenHolder, org.springframework.beans.PropertyValue)

这里会报错

 

 会将set后面的方法去掉set,然后首字母小写放入缓存中,来获取对应的注入值,如果找不到直接报错。

如果是这样会报错吗?不会,底层拿到set方法然后进行反射,故set方法和注入的属性一直就不会报错。

 

如下就不会报错:

 

 


http://www.kler.cn/a/7503.html

相关文章:

  • FreeSWITCH chat 得到的是 Error! Message Not Sent
  • 向潜在安全信息和事件管理 SIEM 提供商提出的六个问题
  • 《Java核心技术 卷I》用户界面AWT事件继承层次
  • c++ 类和对象(中)
  • Fish Agent V0.13B:Fish Audio的语音处理新突破,AI语音助手的未来已来!
  • 4. Spring Cloud Ribbon 实现“负载均衡”的详细配置说明
  • Linux中滴计划任务
  • 普通人怎么用ChatGPT-ChatGPT中文版网页
  • CarSim仿真快速入门(二十四)-CarSimSimulink联合仿真中的输入和输出IO接口
  • 元宇宙与网络安全
  • three.js实现3d球体树状结构布局——树状结构的实现
  • GDOI 2023 游记
  • 【软件设计师07】程序设计语言与语言处理程序基础
  • UVM response_handler和get_response机制
  • 《C++开发技能树》004 语言类·指针和内存管理·glibc的内存实现ptmalloc
  • Vue3加载中(Spin)
  • 38--Django-项目实战-全栈开发-基于django+drf+vue+elementUI企业级项目开发流程-前台首页设计
  • 【vue】使用 el-upload+axis实现手动多文件上传的代码实现
  • 国内ChatGPt研发-中国chatGPT
  • VB execl函数 word文档 KBS
  • Canal增量数据订阅和消费——原理详解
  • ansible自动运维——看明白ansible.cfg配置文件
  • 【Linux】环境变量进程虚拟地址空间
  • MySQL 索引常见问题汇总,一次性梳理
  • React 组件的 children 数据使用
  • Android 10.0 系统framework发送悬浮通知的流程分析