1    源码解析

1.1  jdk解析

1.2  guava解析

1.3  spring解析

1.4  mybaties解析

1    源码解析
1.1  jdk解析

String

 public StringBuilder append(boolean b) {
super.append(b);
return this;
} public StringBuilder append(char c) {
super.append(c);
return this;
} public StringBuilder append(int i) {
super.append(i);
return this;
} public StringBuilder append(long lng) {
super.append(lng);
return this;
} public StringBuilder append(float f) {
super.append(f);
return this;
} public StringBuilder append(double d) {
super.append(d);
return this;
}

StringBuilder

    public synchronized StringBuffer append(Object obj) {
super.append(String.valueOf(obj));
return this;
} public synchronized StringBuffer append(String str) {
super.append(str);
return this;
}
1.2  guava解析(ImmutableSet)

 copyOf方法

 public static <E> ImmutableSet<E> copyOf(Collection<? extends E> elements) {
if (elements instanceof ImmutableSet && !(elements instanceof ImmutableSortedSet)) {
ImmutableSet<E> set = (ImmutableSet)elements;
if (!set.isPartialView()) {
return set;
}
} else if (elements instanceof EnumSet) {
return copyOfEnumSet((EnumSet)elements);
} Object[] array = elements.toArray();
return construct(array.length, array);
}

Of方法

 public static <E> ImmutableSet<E> of() {
return RegularImmutableSet.EMPTY;
} public static <E> ImmutableSet<E> of(E element) {
return new SingletonImmutableSet(element);
} public static <E> ImmutableSet<E> of(E e1, E e2) {
return construct(2, e1, e2);
} public static <E> ImmutableSet<E> of(E e1, E e2, E e3) {
return construct(3, e1, e2, e3);
} public static <E> ImmutableSet<E> of(E e1, E e2, E e3, E e4) {
return construct(4, e1, e2, e3, e4);
} public static <E> ImmutableSet<E> of(E e1, E e2, E e3, E e4, E e5) {
return construct(5, e1, e2, e3, e4, e5);
}

add方法(注意静态内部类)

   @CanIgnoreReturnValue
public ImmutableSet.Builder<E> add(E element) {
super.add(element);
return this;
} public static class Builder<E> extends ArrayBasedBuilder<E> {
public Builder() {
this(4);
} Builder(int capacity) {
super(capacity);
} @CanIgnoreReturnValue
public ImmutableSet.Builder<E> add(E element) {
super.add(element);
return this;
} @CanIgnoreReturnValue
public ImmutableSet.Builder<E> add(E... elements) {
super.add(elements);
return this;
} @CanIgnoreReturnValue
public ImmutableSet.Builder<E> addAll(Iterable<? extends E> elements) {
super.addAll(elements);
return this;
} @CanIgnoreReturnValue
public ImmutableSet.Builder<E> addAll(Iterator<? extends E> elements) {
super.addAll(elements);
return this;
} public ImmutableSet<E> build() {
ImmutableSet<E> result = ImmutableSet.construct(this.size, this.contents);
this.size = result.size();
return result;
}
1.3  spring解析

BeanDefinitionBuilder类

   public static BeanDefinitionBuilder genericBeanDefinition() {
BeanDefinitionBuilder builder = new BeanDefinitionBuilder();
builder.beanDefinition = new GenericBeanDefinition();
return builder;
}
1.4  mybaties解析

SqlSessionFactoryBuilder类(建造者模式中再使用建造者)

解析xml过程

public SqlSessionFactory build(Reader reader, String environment, Properties properties) {
SqlSessionFactory var5;
try {
XMLConfigBuilder parser = new XMLConfigBuilder(reader, environment, properties);
var5 = this.build(parser.parse());
} catch (Exception var14) {
throw ExceptionFactory.wrapException("Error building SqlSession.", var14);
} finally {
ErrorContext.instance().reset(); try {
reader.close();
} catch (IOException var13) {
;
} } return var5;
}

XMLConfigBuilder类

  public Configuration parse() {
if (parsed) {
throw new BuilderException("Each XMLConfigBuilder can only be used once.");
}
parsed = true;
parseConfiguration(parser.evalNode("/configuration"));
return configuration;
} private void parseConfiguration(XNode root) {
try {
Properties settings = settingsAsPropertiess(root.evalNode("settings"));
//issue #117 read properties first
propertiesElement(root.evalNode("properties"));
loadCustomVfs(settings);
typeAliasesElement(root.evalNode("typeAliases"));
pluginElement(root.evalNode("plugins"));
objectFactoryElement(root.evalNode("objectFactory"));
objectWrapperFactoryElement(root.evalNode("objectWrapperFactory"));
reflectorFactoryElement(root.evalNode("reflectorFactory"));
settingsElement(settings);
// read it after objectFactory and objectWrapperFactory issue #631
environmentsElement(root.evalNode("environments"));
databaseIdProviderElement(root.evalNode("databaseIdProvider"));
typeHandlerElement(root.evalNode("typeHandlers"));
mapperElement(root.evalNode("mappers"));
} catch (Exception e) {
throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + e, e);
}
}

最新文章

  1. QT学习第1天
  2. Untiy3D - 窗口界面1
  3. Android单元测试
  4. Web压力测试 ApacheBench(ab)
  5. jQuery中 end(); 的用法
  6. L2-010. 排座位
  7. @media max-width 与jquery宽度取值的差异
  8. pandas 按照列A分组,将同一组的列B求和,生成新的Dataframe
  9. 实验吧_貌似有点难(php代码审计)&amp;头有点大
  10. CentOS 7 Nginx1.12.2平滑升级到新版本nginx-1.13.3
  11. 理解 OAuth2.0
  12. 在Linq to sql 和 Entity framework 中使用lambda表达式实现left join
  13. 深入浅出 1 - AI量化策略快速理解
  14. 浅读官方代码--ActionManager
  15. Linux安装命令出现如下错误:cannot find a valid baseurl for repo :base/7x86_64
  16. Memcached 简单利用和简单了解(Mac的安装和使用)
  17. 用编程方式编写Babylon格式的宇宙飞船3D模型
  18. Daily Scrum7 11.11
  19. (基于Jenkins + SVN + Ant + Weblogic Server的)应用程序自动(/一键)部署的设想
  20. 使用Visual Studio将C#生成DLL文件的方法

热门文章

  1. SIMS(secondary ion mass spectroscopy)二次离子质谱
  2. iframe onload事件触发两次
  3. 抓包工具Charles破解版
  4. Oracle 设置NLS_CHARACTERSET字符集
  5. laravel 动态属性
  6. IDEA导入maven项目不自动识别
  7. Python中注释与声明
  8. Ubuntu各个版本的镜像下载地址
  9. mysql数据库数据备份还原
  10. AngularJS学习:第一个demo