关闭

Bean 的生命周期

Bean 实例从创建到最后销毁,需要经过很多过程,执行很多生命周期方法。 Step1:调用无参构造器,创建实例对象。 Step2:调用参数的 setter,为属性注入值。 Step3:若Bean实现了BeanNameAware接口,则会执行接口方法setBeanName(String beanId),使 Bean 类可以获取其在容器中的 id 名称。 Step4:若 Bean 实现了 Bea...
阅读(179) 评论(0)

Bean 后处理器

Bean 后处理器是一种特殊的 Bean,容器中所有的 Bean 在初始化时,均会自动执行该类的两个方法。由于该 Bean 是由其它 Bean 自动调用执行,不是程序员手工调用,故此 Bean无须 id 属性。 需要做的是,在 Bean 后处理器类方法中,只要对 Bean 类与 Bean 类中的方法进行判断,就可实现对指定的 Bean 的指定方法进行功能扩展与增强。方法返回的 Bean 对象,即是...
阅读(187) 评论(1)

容器中 Bean 的作用域

当通过 Spring 容器创建一个 Bean 实例时,不仅可以完成 Bean 的实例化,还可以通过scope 属性,为 Bean 指定特定的作用域。Spring 支持 5 种作用域。 (1)singleton:单态模式。即在整个 Spring 容器中,使用 singleton 定义的 Bean 将是单例的,只有一个实例。默认为单态的。 (2)prototype:原型模式。即每次使用 getBea...
阅读(9956) 评论(0)

动态工厂 Bean和静态工厂Bean

动态工厂 Bean 有些时候,项目中需要通过工厂类来创建 Bean 实例,而不能像前面例子中似的,直接由 Spring 容器来装配 Bean 实例。使用工厂模式创建 Bean 实例,就会使工厂类与要创建的Bean 类耦合到一起。(1 )将动态工厂 Bean 作为普通 Bean 使用 将动态工厂 Bean 作为普通 Bean 来使用是指,在配置文件中注册过动态工厂 Bean 后,测试类直接通过...
阅读(181) 评论(0)

ApplicationContext 接口容器和BeanFactory 接口容器

ApplicationContext 接口容器 ApplicationContext 用于加载 Spring 的配置文件,在程序中充当“容器”的角色。其实现 类有两个。通过 Ctrl +T 查看: A 、配置文件在类路径下 若 Spring 配置文件存放在项目的类路径下,则使用 ClassPathXmlApplicationContext 实现类进行加载。 B 、配置文件在本地目...
阅读(24076) 评论(0)

HashSet源码解析

HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作,基本上都是直接调用底层HashMap的相关方法来完成。HashSet的源...
阅读(747) 评论(0)

HashMap源码解析——get方法

public V get(Object key) { Node e; return (e = getNode(hash(key), key)) == null ? null : e.value; }getNode()方法 final Node getNode(int hash, Object key) { Node...
阅读(9744) 评论(0)

HashMap源码解析——put方法

public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }先看hash(key)函数。它是通过key的hashCode值计算hash码。//计算hash值的方法 通过键的hashCode来计算static final int hash(Object key) {...
阅读(1046) 评论(0)

HashMap源码解析——构造方法

上篇博文列取了HashMap的关键属性,本篇主要看构造方法HashMap的几个构造方法: 补充下//加载因子 static final float DEFAULT_LOAD_FACTOR = 0.75f; //容量 static final int MAXIMUM_CAPACITY = 1 << 30; static final int MIN_TREEIFY_CAPACITY = 6...
阅读(1346) 评论(0)

HashMap源码解析——关键属性

HashMap类中的一些关键属性:ttransient Node[] table;//存储元素的实体数组 transient int size;//存放元素的个数 int threshold; //临界值 当实际大小超过临界值时,会进行扩容threshold = 加载因子*容量 final float loadFactor; //加载因子 transient int modCount;...
阅读(1164) 评论(0)

HashMap源码解析——概述

HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。  值得注意的是HashMap不是线程安全的,如果想要线程安全的HashMap,可以通过Collections类的静态方法synchro...
阅读(9929) 评论(0)

使用Eclipse上传/下载Git项目

使用Eclipse上传/下载Git项目 前提:Eclipse已安装EGit插件 已拥有GitLab / GitHub / 其它Git托管服务账号 SSH方式 配置配置Git信息配置用户信息 Eclipse,选择菜单:Preferences > Team > Git > Configuration > User Settings > Add Entry.. Key: user.name, Va...
阅读(1161) 评论(0)

Maven Dependencies 不见了

Maven Dependencies 不见了解决办法:1 选中项目 –> 右键 –> Maven –> Disable Maven Nature 此时,右键菜单中将隐藏【Maven】菜单选项2 选中项目 –> 右键 –> Configure –> Convert to Maven project. 3 选中项目–>右键–>Properties–>Deployment Assembly –...
阅读(10062) 评论(0)

MySQL存储过程和函数的区别

1、总述 存储函数和存储过程统称为存储例程(stored routine)。两者的定义语法很相似,但却是不同的内容。 存储函数限制比较多,比如不能用临时表,只能用表变量。还有一些函数都不可用等等。而存储过程的限制相对就比较少。 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 2、返回值上的不同 存储函数将向调用者返回一个且仅返回一个结果值。 存储过程将返回一个或...
阅读(1298) 评论(0)

MySQL中的while循环和repeat循环的区别

MySQL中的while循环和repeat循环的区别1、while是满足条件才执行循环,repeat是满足条件退出循环;2、while在首次循环执行之前就判断条件,最少执行0次,repeat是在首次执行循环之后才判断条件,循环至少执行一次。...
阅读(10023) 评论(0)
40条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:451885次
    • 积分:3753
    • 等级:
    • 排名:第9076名
    • 原创:29篇
    • 转载:19篇
    • 译文:0篇
    • 评论:5条
    文章分类
    文章存档
    最新评论