【面试大全-Spring】Spring Bean是如何创建的

zz/2024/7/13 12:35:40
  • 在Spring中,万物都是bean对象,每一个对象都可以封装成BeanDefinition,然后去生成bean对象。
    所以首先第一步,spring要找到哪些bean需要实例化,第一种是xml的方式,如果需要实例化bean就在xml中配置bean标签,找到所有需要创建的bean,第二种注解方式,扫描所有添加了spring注解的bean,把所有的bean封装成一个BeanDefinition放入一个list.

  • 第二步,循环list,通过BeanDefinition中的类全名称,通过反射进行实例化,属性注入,如果还有一个初始化的动作,也可以在属性注入后做,比如:init-method方法,比如实现了InitializingBean这个接口,然后在初始化的时候自动调用afterPropertiesSet该方法,我们可以在这个里面对bean做其他的操作,如果bean需要被代理,则通过后置通知,去生成代理的bean,如果bean实现了接口就使用jdk代理,如果没有实现就使用cglib,如果配置的优先级,则优先使用cglib。

  • 第三步,完成后就将bean放入到spring的一级容器中。


http://www.ngui.cc/zz/2748851.html

相关文章

【面试大全-Java】必备基础

Java语言有哪些特点 简单易学、提供丰富的类库面向对象、高内聚低耦合与平台无关、JVM跨平台可靠安全、支持多线程面向对象和面向过程的区别 面向过程:是分析解决问题的步骤,然后用函数把这些步骤一步步实现,然后在使用的时候一起调用即可,性能较高,所以单片机嵌入式开发都…

【元宇宙】当前元宇宙运行规则问题与展望

一、背景:愈演愈烈的“元宇宙热” 当赛博朋克科幻小说《雪崩》(Snow Crash)在1992年发表之时,作者尼尔斯蒂芬森(Neal Stephenson)绝不会想到自己提出的“元宇宙”(Metaverse)概念竟然会在十九年后的资本市场…

6月26日网络编程

网络编程 1、软件之间通信条件: a.找到对方IP b.数据要发送到对方指定的应用程序上,为了表示这些程序,所以给这些网络应用程序都用数字进行标示。 为了方便称呼这个数字,叫做端口,逻辑端口。 c.定义通信规则。既成…

7月02日SQL server条件以及高级查询

SQL server条件以及高级查询 --条件 --where 请问if() --select,update,delete需要加条件 --true flase --关系运算符&#xff1a; && || ! --> < > < ! and or not select *from student select *from student where saddress陕西 sel…

Android监听HOME键的另外一种方法

众所周知&#xff0c;我们监听返回键事件&#xff0c;无法是下面两个方法&#xff1a; Overridepublic void onBackPressed() {//do something//super.onBackPressed();}Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode KeyEvent.KEYCODE_BACK){/…

2014,写给25岁的自己

2014&#xff0c;写给25岁的自己 2012年6月&#xff0c;在我们以青春的名义&#xff0c;为逝去的大学生活而最后举杯之后&#xff0c;我毕业了。 2012年7月&#xff0c;拖着沉重的行李箱&#xff0c;我来到了这座熟悉又陌生的城市&#xff0c;开始了自己的第一份工作。 2012年…

Android Studio 中Gradle配置debug使用release的签名

当我们在做微信微博sdk分享的时候调试非常麻烦&#xff0c;因为要使用对应的签名版本才能调用sdk成功。 当我们使用AndroidStudio的Gradle之后会很简单的解决这个问题。 1.我们把签名文件放到工程根目录下&#xff08;这样做是为了保持路径的统一&#xff09; 2.在Gradle中引…

Java多线程之并发安全经典案例-卖票

转载请注明出处&#xff1a;http://blog.csdn.net/linglongxin24/article/details/52807454【DylanAndroid的csdn博客】 线程相关知识 1.创建线程的两种方式 继承Thread类。实现Runnable接口。&#xff08;这种方式较为常用&#xff09; 2.实现Runnable接口的好处 将线程的…

Java泛型应用之打造Android中ListView和GridView万能适配器【CommonAdapter】--超简洁写法

转载请注明出处&#xff1a;http://blog.csdn.net/linglongxin24/article/details/52813227 【DylanAndroid的csdn博客】 在android中使用最多的就是ListView&#xff0c;GridView&#xff0c;用到这两个控件那么肯定要用到适配器&#xff0c;那就是定义一个类继承BaseAdapter&…

Android属性动画上手实现各种动画效果,自定义动画,抛物线等

转载请注明出处&#xff1a;http://blog.csdn.net/linglongxin24/article/details/53084234 本文出自【DylanAndroid的博客】 在上一篇Android基础动画,组合动画&#xff0c;帧动画&#xff0c;布局动画&#xff0c;Activity跳转动画中我写了基础动画的用法&#xff0c;那么这…