加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

一个.java文件是如何转为Spring能识别的bean

发布时间:2021-05-20 09:47:27 所属栏目:大数据 来源: https://blog.csdn.net/u014209
导读:java文件在经过编译器编译后会生成.class 文件。.class文件会包含类的一些基本信息,比如类名,构造函数,属性,方法等。 .class 文件会由jvm 加载到jvm。至于这个类是如何加载到jvm的,是遵从类的加载机制:双亲委任原则。 类加载到jvm后,在spring 的环境

java文件在经过编译器编译后会生成.class 文件。.class文件会包含类的一些基本信息,比如类名,构造函数,属性,方法等。

.class 文件会由jvm 加载到jvm。至于这个类是如何加载到jvm的,是遵从类的加载机制:双亲委任原则。

类加载到jvm后,在spring 的环境下,会统一转为能使用的bean,并由IOC来统一管理

  • 1一些类,比如jvm自己启动需要的类会先被加载进来
  • 2一些有注解的类,比如@Controller @Service @Repository @Component 这些注解修饰的类也会被加载进来
  • 3在2加载进来的过程中,如果有注解注入的类,比如@Autowired @Resource 修饰的属性类,也会被加载到ioc

ioc会管理所有初始化后的bean。一般情况下bean 的作用域都是单例的,也有protoful 的scope ,这种情况就是每次需要一个bean 都会去new一次。

这个过程需要注意:循环引用的问题,通过使用setter注入或注解注入来解决循环引用的问题。

另一个问题就是 ioc 的底层实现,就是这么多的bean 初始化后存在哪里,是用的什么数据结构在存储很显然,就是Map

那具体就是ConcurrentHashMap,一个java bean 在spring 中是通过BeanDefinition来定义的。可以看到DefaultListablebeanfactory中有对ioc容器的声明就是一个ConcurrentHashMap。

?

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读