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

北海哪里做网站建设连运港网络公司做网站

北海哪里做网站建设,连运港网络公司做网站,移动端企业网站模板下载,wordpress动画插件Bean的概念 是Spring框架在运行时管理的对象#xff0c;是任何引用程序的基本构建块。 Bean的属性 id属性#xff1a;Bean的唯一标志名#xff0c;必须以字母开头且不包含特殊字符 class属性#xff1a;用来定义类的全限定名#xff08;包名 类名#xff09; name属性…Bean的概念 是Spring框架在运行时管理的对象是任何引用程序的基本构建块。 Bean的属性 id属性Bean的唯一标志名必须以字母开头且不包含特殊字符 class属性用来定义类的全限定名包名 类名 name属性用来为Bean指定一个或多个别名且能包含特殊字符如果没有idname相当于id。 scope属性 singleton单例默认值 prototype多例 requestWeb项目中把创建的对象放到Request域中 sessionWeb项目中把创建的对象放到Session域中 单例模式定义 单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时为了防止频繁地创建对象使得内存飙升单例模式可以让程序仅在内存中创建一个对象让所有需要调用的地方都共享这一单例对象。 在Spring中定义Bean的时候可以指定其scope(属性)。如果是Singleton就会创建在Spring容器内创建一个全局唯一的单例Bean。需要注意的是Spring中的单例跟设计模式中的单例还是有区别的在设计模式中相同的类加载器只能创建一个实例但是在Spring中是通过Bean的id来校验唯一性就是说同一个类可以创建多个id不同的实例。 设计模式的单例 饿汉式 饿汉式在类加载时已经创建好该对象在程序调用时直接返回该单例对象即可即我们在编码时就已经指明了要马上创建这个对象不需要等到被调用时再去创建。 优点这种写法比较简单就是在类装载的时候就完成实例化。避免了线程同步问题。 缺点在类装载的时候就完成实例化没有达到Lazy Loading的效果。如果从始至终从未使用过这个实例则会造成内存的浪费。 public class Singleton {//在类初始化时就实例化好了当前对象private static Singleton instance new Singleton();//私有无参构造防止类在外部被实例化private Singleton(){}public static Singleton getInstance() {return instance;} } 懒汉式(线程不安全) 这种写法起到了懒加载的效果但是只能在单线程下使用。如果在多线程下一个线程进入了判断语句块还未来得及往下执行另一个线程也通过了这个判断语句这时便会产生多个实例。所以在多线程环境下不可使用这种方式。 public class Singleton {private static Singleton instance;private Singleton(){}public static Singleton getInstance() {if(instance null) instance new Singleton();return instance;} } 懒汉式(线程安全) 优点线程安全 缺点效率太低了每个线程在想获得类的实例时候执行getInstance()方法都要进行同步。而其实这个方法只执行一次实例化代码就够了后面的想获得该类实例直接return就行了。方法进行同步效率太低要改进。 public class Singleton {private static Singleton instance;private Singleton(){}public static synchronized Singleton getInstance() {if(instance null) instance new Singleton();return instance;} } 双重检查锁DCL volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制同步块或方法和 volatile 变量相比于synchronizedsynchronized通常称为重量级锁volatile更轻量级因为它不会引起线程上下文的切换和调度。但是volatile 变量的同步性较差有时它更简单并且开销更低而且其使用也更容易出错。 优点线程安全延迟加载效率较高。 public class Singleton {private volatile static Singleton instance;private Singleton(){}public static Singleton getInstance() {if(instance null){synchronized(Singleton.class){if(instance null){instance new Singleton();}}}return instance;} } 静态内部类 这种方式跟饿汉式方式采用的机制类似但又有不同。两者都是采用了类装载的机制来保证初始化实例时只有一个线程。不同的地方在饿汉式方式是只要Singleton类被装载就会实例化没有Lazy-Loading的作用而静态内部类方式在Singleton类被装载时并不会立即实例化而是在需要实例化时调用getInstance方法才会装载SingletonInstance类从而完成Singleton的实例化。类的静态属性只会在第一次加载类的时候初始化所以在这里JVM帮助我们保证了线程的安全性在类进行初始化时别的线程是无法进入的。优点避免了线程不安全延迟加载效率高。 public class Singleton {private Singleton(){}private static class SingletonInstance{private static final Singleton INSTANCE new singleton();}public static Singleton getInstance() {return SingletonInstance.INSTANCE;} } 枚举 不仅能避免多线程同步问题而且还能防止反序列化重新创建新的对象。 public enum Singleton{INSTANCE; } Spring源码 关于Spring中的单例模式主要就看org.springframework.beans.factory.support.AbstractBeanFactory。会从getBean()方法中调用doGetBean()方法而在doGetBean()中就是判断bean的属性去决定单例或者多例这里主要研究单例。 其次在看org.springframework.beans.factory.support.DefaultSingletonBeanRegistry。在这里面可以观察到getSingleton()的三个重载方法。还有其方法内有雾个很重要的属性。 /*** 在一个CurrentHashMap中存储beanName到beanInstance的映射关系* 从代码可以看出Spring在创建一个单例bean的时候会先通过beanName从一级缓存中获取* 当获取不到是才会去调用回调函数createBean进行实例创建* 在createBean中调用doCreateBean在doCreateBean中调用instantiateBean()方法。*/ private final MapString, Object singletonObjects new ConcurrentHashMap(256); //二级缓存 private final MapString, Object earlySingletonObjects new ConcurrentHashMap(16); //三级缓存 private final MapString, ObjectFactory? singletonFactories new HashMap(16); 这个getSingleton()重载方法就用到了双重检查锁 至于bean的加载、初始化等等还是得看大牛们的文章 此篇我只去了解了Spring的单例设计模式但对于bean的过程我还是达不到那个能看得懂源码的地步。感谢观看。
http://www.hkea.cn/news/14419082/

相关文章:

  • 网站域名建设费进什么科目如何打死网站
  • 可以免费做中考题的网站网站开发项目经理岗位职责
  • 建站塔山双喜只用html5做网站
  • 好网站推理奉贤区网站建设
  • 滁州市大滁城建设网站租车公司
  • 株洲网络公司-网站建设怎么样品牌网站建设小8蝌蚪
  • 温岭建设阳光网站西安建设工程信息网新平台
  • 网站建设主要做什么网站建设开票名称
  • 网站建设擎宇做扎染的网站
  • 网站如何seo推广云端视差wordpress企业主题破解版
  • 浙江鸿翔水利建设有限公司网站网游开发成本
  • 公司网站条形码如何做企业网站源码 一品资源网
  • 自己做网站好还是凡科360全景预览wordpress插件
  • 重庆赛区竞赛网站建设德州网站开发培训
  • 阿里巴巴做网站吗合肥网版制作
  • 低成本网站制作有关于做茗茶的网站
  • 做网站除了买域名还有什么wordpress环境
  • 公司网站简介WordPress怎么改文章颜色
  • 设计网站页面要多少钱泰安建材网站建设电话
  • wordpress站文章显示时分秒网页设计图片怎么居中
  • 网站建设为什么学flash做网站的任务书
  • 网站编辑专题怎么做网站建设问一问公司
  • 阜阳做网站的公司wordpress如何在底部设置备案
  • 机构编制网站建设seo优化什么意思
  • 临漳专业做网站一起作业网站英语作业怎么做
  • 学做美食的网站视频东莞网络营销销售
  • 如何提高外贸网站排名外贸平台有哪些国际
  • 青岛网站建设首选陕西省建设银行网站6
  • 宁波网站建设多少钱一个elementui 做的网站
  • 深圳网站设计|优选灵点网络wordpress创建网站