Spring中的Bean

  • Bean

    • bean是什么

      Spring本质上可以理解为是一个管理对象的容器,这个对象换一个高大上的名字就是Bean。以前我们要用对象是通过自己new来生产的,现在是通过Spring这个工厂来代替我们管理生产,我们来使用。对于Spring容器能够生产那些对象,则取决于配置文件中配置。对于我们而言,我们使用Spring框架所做的就是两件事:开发Bean、配置Bean。对于Spring框架来说,它要做的就是根据配置文件来创建Bean实例,并调用Bean实例的方法完成“依赖注入”。简而言之,Spring Bean是Spring框架在运行时管理的对象。Spring Bean是任何Spring应用程序的基本构建块。使用Spring框架时编写的大多数应用程序逻辑代码都将放在Spring Bean中。

    • Bean的创建

      1、无参构造

      通过默认的无参构造方式创建,其本质就是把类交给Spring自带的工厂管理、由Spring自带的工厂模式(BeanFactory)帮我们维护和创建这个类。如果是有参的构造方法,也可以通过XML配置传入相应的初始化参数,这种也是开发中用的最多的。

      2、静态工厂

      通过静态工厂创建,其本质就是把类交给我们自己的静态工厂管理,Spring只是帮我们调用了静态工厂创建实例的方法,而创建实例的这个过程是由我们自己的静态工厂实现的,在实际开发的过程中,很多时候我们需要使用到第三方jar包提供给我们的类,而这个类没有构造方法,而是通过第三方包提供的静态工厂创建的,这是时候,如果我们想把第三方jar里面的这个类交由spring来管理的话,就可以使用Spring提供的静态工厂创建实例的配置。

      3、实例工厂

      通过实例工厂创建,其本质就是把创建实例的工厂类交由Spring管理,同时把调用工厂类的方法创建实例的这个过程也交由Spring管理,看创建实例的这个过程也是有我们自己配置的实例工厂内部实现的。在实际开发的过程中,如Spring整合Hibernate就是通过这种方式实现的。但对于没有与Spring整合过的工厂类,我们一般都是自己用代码来管理的。

    • 什么是单例池

      学习资源:

      https://blog.csdn.net/yunzhaji3762/article/details/113623168?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166911535216800182748395%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166911535216800182748395&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-113623168-null-null.142v66pc_rank_34_queryrelevant25,201v3control_1,213v2t3_control2&utm_term=ConcurrentHashMap&spm=1018.2226.3001.4187

      单例池底层是一个ConcurrentHashMap,第一次创建单例对象时,会把它存入ConcurrentHashMap,下次再创建该对象时,会直接从单例池中拿。

      • 问题:

        HashMap和ConcurrentHashMap有什么区别:

        HashMap不支持并发操作,没有同步方法,ConcurrentHashMap支持并发操作,通过继承 ReentrantLock(JDK1.7重入锁)/CAS和synchronized(JDK1.8内置锁)来进行加锁(分段锁),每次需要加锁的操作锁住的是一个 segment,这样只要保证每个 Segment 是线程安全的,也就实现了全局的线程安全。JDK1.8之前HashMap的结构为数组+链表,JDK1.8之后HashMap的结构为数组+链表+红黑树;JDK1.8之前ConcurrentHashMap的结构为segment数组+数组+链表,JDK1.8之后ConcurrentHashMap的结构为数组+链表+红黑树。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值