首页
学习
活动
专区
圈层
工具
发布

MyBatis 源码分析篇---配置文件的解析过程

需要注意的是SqlSessionFactoryBuilder类中的build方法被进行了多次重载,按照传入的主参数来分则分为两类1. 传入Reader参数的;2. 传入InputStream参数的。...接着检查是否在Configuration类里都有相应的setter方法,不存在则抛出异常。...: 获取当前类,接口,以及父类中的方法 过滤出setter方法其方法之后一个参数 获取方法对应的属性名 将属性名和其方法对象放入冲突集合中 解决setter冲突 前四步相对而言比较简单,我在此处就不展开分析了...方法不存在重载的情况,所以可以用它的返回值类型来反推哪个setter方法更合适 获取setter方法的参数类型 如果setter方法的参数类型和其对应的getter方法返回类型一致,则认为是最好的选择,...(检测传入的参数中是否宝航了字符'.')

76430

最近我遇到的10个Java面试问题

1、因为字符串在Java中是不可变的,才能有String pool。通过这种方式,Java运行时节省了大量Java堆空间,因为不同的字符串变量可以引用池中的相同字符串变量。...然后,如果您决定从这两个子类继承,那么如果您想调用该方法,语言无法决定您想调用哪个方法 ? 我们把这个问题称为钻石问题。它的名字来自上面的图片,它描述了警告。 8、你怎么能让一个类不可变的?...6、在getter方法中执行对象克隆,以返回副本,而不是返回实际的对象引用。 9、单例Singleton什么意思? singleton是一个类,它只允许自己的一个实例被创建,并提供对所创建实例的访问。...它包含静态变量,这些静态变量可以容纳其自身的惟一和私有实例。当用户希望将类的实例化限制为一个对象时,可以使用它。当需要单个对象来协调跨系统的操作时,这通常是有帮助的。 10、什么是依赖注入?...通过JavaBean属性注射依赖关系的做法称为设值方法注入(Setter Injection);将依赖关系作为构造函数参数传入的做法称为构造器注入(Constructor Injection) 总结 在本文中

90530
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OC知识--成员变量(属性,实例变量)的相关知识

    这样写的好处在下边会提到 2. setter和getter方法 我们无法从外界(比如其他类和文件中)直接访问定义在类中的成员变量。...1. setter方法 作用:用来设置成员变量,给成员变量赋值,可以在方法里面对变量进行判断,过滤掉一些不合理的值 命名规范: 必须是对象方法 返回值类型为void 方法名必须以set开头,而且后面跟上成员变量名去掉...可以让我们在使用getter方法获取数据之前,对数据进行加工 比如双十一活动,我们希望对全线商品的价格在原来的价格基础上打五折,那么我们只要去改成品类的价格的getter方法就可以了,让他返回的值为价格...就会将@property生成的什么拷贝到@implementation中 由于getter/setter方法实现是要将传入的形参给属性和获取属性的值,所以在@synthesize的属性后面写上要将传入的值赋值给谁和要返回哪个属性的值...@property(nonatomic, assign) int size; retain:会自动帮我们生成getter/setter方法内存管理的代码,在setter方法中,对传入的对象进行引用计数加

    3K60

    实战:应用对持久数据访问| 从开发角度看应用架构9

    另外,应该通过使用getter和setter方法来访问每个实例变量。 最后,类必须至少有一个没有参数的构造函数,尽管类仍然可以有其他构造函数接受参数。...基于属性的访问--Property-based Access 为了提供基于属性的访问,getter和setter方法必须在Java实体类中定义。...因为只能通过方法访问,可以说基于属性的访问提供了更好的封装。 通过注解getter方法提供基于属性的访问。 getter方法的返回类型决定了属性的类型。...getter方法的返回类型必须与传递给setter方法的参数的类型相同。 getter和setter方法必须是public或protected,并且必须遵循Java bean的命名约定。...JPA提供程序在启动时使用JNDI查找服务按名称查找数据源。 4可以在属性元素中设置其他标准或特定于供应商的属性。 hibernate.Dialect属性指定使用哪个数据库。

    2.2K30

    Java三大特性(一)—封装

    要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。 原则 将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。...封装的操作—private关键字 private的含义 private是一个权限修饰符,代表最小权限。 可以修饰成员变量和成员方法。 被private修饰后的成员变量和成员方法,只在本类中才能访问。...所以,我们只能使用this关键字,来解决这个重名问题。 this的含义 this代表所在类的当前对象的引用(地址值),即对象自己的引用。 记住 :方法被哪个对象调用,方法中的this就代表那个对象。...如果你提供了构造方法,系统将不再提供无参数构造方法。 构造方法是可以重载的,既可以定义参数,也可以不定义参数。 标准代码—JavaBean JavaBean 是 Java语言编写类的一种标准规范。...符合JavaBean 的类,要求类必须是具体的和公共的,并且具有无 参数的构造方法,提供用来操作成员变量的set 和get 方法。

    25320

    2018年不能错过的 14 个 Java 库!

    OkHttp HTTP是现代网络的通讯方式。决定我们如何交换数据和媒体。 如果有效地执行HTTP通讯会使您的内容加载更快,并且节省带宽。...它扩展了观察者模式以支持数据/事件序列,并添加操作符,允许您以声明方式组合序列,同时抽象出对低级线程,同步,线程安全和 并发 数据结构等问题的关注。...Lombok 使用注释来减少Java中的重复代码,例如getters setters,not null检查,生成Builder等。 val - 不会产生麻烦的final局部变量。...JUnitParams 与标准JUnit的主要区别: 更明确 - params是在测试方法参数中,而不是类字段 更少的代码 - 你不需要一个构造函数来设置参数 您可以在一个类中混合使用非参数方法的参数...参数可以作为CSV字符串或参数提供程序类传递 参数提供程序类可以具有任意多个提供所需方法的参数,以便可以对不同的案例进行分组 你可以有一个提供参数的测试方法(不再有外部类或静态) 您可以在IDE中查看实际的参数值

    1.9K10

    《JavaSE》---11.<面向对象系列之(封装)>

    前言 本篇博客主要讲解Java基础语法中的 面向对象系列之 封装的概念、四大访问修饰符的详细解释、封装成员变量配套的setter和getter方法及快捷键的使用、封装的意义。...在Java中也引入了包 包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式, 比如:一个包中的类不想被其他包中的类使用。...和getter我们就可以在外部成功初始化和访问我们已经封装好的成员变量。...Setter和Getter setter和getter相当于一个组合,一个对封装的变量进行赋值,另一个用来返回这个变量的值。...如果要一起使用Setter和Getter,那么还有一个快捷健就是 快捷1:在这个类当中鼠标右键,点击generate...再点击Getter and Setter和,之后我们可以选择参数,再点击ok就行了

    29810

    *Java面向对象的三大特性及理解*

    setter和getter来对属性值进行获取或者设定。...,前提是与父类中的该方法具有相同的方法名、返回类型以及参数列表,缺一不可,同时子类不能使用比父类更严格的访问权限。...(2)方法重载:在同一个类中处理不同数据的多个相同方法名的多态手段,前提是方法名相同,参数列表必须不同(类型/个数),返回类型不做要求,调用时根据传入的参数列表来决定具体是哪个方法,这就是多态性。...编译时类型由声明该变量时使用的类型决定;运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现所谓的多态。...,写出通用的代码,做出通用的编程,以适应需求的不断变化; (2)赋值之后,父类型的引用就可以根据当前赋值给它的子对象的特性以不同的方式运作; (3)提高可维护性(继承保证),只需添加或修改某一子类,不影响其他类

    1.1K01

    MyBatis 源码分析 - 配置文件解析过程

    在本篇文章中,我将从 MyBatis 解析配置文件的过程着手进行分析。并会在分析的过程中,向大家介绍一些配置的使用方式和用途。...Reflector 这个类的用途主要是是通过反射获取目标类的 getter 方法及其返回值类型,setter 方法及其参数值类型等元信息。并将获取到的元信息缓存到相应的集合中,供后续使用。...● Reflector 构造方法及成员变量分析 Reflector 构造方法中包含了很多初始化逻辑,目标类的元信息解析过程也是在构造方法中完成的,这些元信息最终会被保存到 Reflector 的成员变量中...方法的返回值类型,由于 getter 方法不存在重载的情况, * 所以可以用它的返回值类型反推哪个 setter 的更为合适 */ Class<?...如下: 冲突方法的参数类型与 getter 的返回类型一致,则认为是最好的选择 冲突方法的参数类型具有继承关系,子类参数对应的方法被认为是更合适的选择 冲突方法的参数类型不相关,无法确定哪个是更好的选择

    1K30

    Kotlin的互操作——Kotlin与Java互相调用

    : ① 属性读写 Kotlin可以自动识别Java中的getter/setter;在Java中可以过getter/setter操作Kotlin属性。...约定的getter和setter方法(名称以get开头的无参数方法和以set开头的单参数方法)在Kotlin中表示为属性。...② 空安全类型 Kotlin的空安全类型的原理是,Kotlin在编译过程中会增加一个函数调用,对参数类型或者返回类型进行控制,开发者可以在开发时通过注解@Nullable和@NotNull方式来弥补Java...();//没问题,通过单例实例调用 Obj.INSTANCE.foo();// 也没问题 @JvmStatic注解也可以被应用于对象或伴生对象的属性上,使其getter和setter方法在该对象或包含该伴生对象的类中是静态成员...⑦ 型变的泛型 当Kotlin使用了声明处型变时,可以通过两种方式从Java代码中看到它们的用法。

    4.6K10

    Groovy

    属性和getter/setter:在Java中,你需要为类中的每个字段显式编写getter和setter方法,除非你使用了自动getter和setter的语法(Java 11及以上版本)。...,它允许开发者以一种简洁和表达性强的方式来编写代码。...闭包的概念源自函数式编程,它提供了一种定义代码块的方式,这个代码块可以被赋值给变量、作为参数传递给方法或者在类中定义为成员。...接受参数和返回值:闭包可以定义自己的参数,就像方法一样。同时,闭包也可以有返回值。这使得闭包可以执行复杂的操作,并且可以返回结果。 引用外部变量:闭包可以捕获并使用其定义时所在的作用域中的变量。...闭包的使用 闭包可以在多种场合使用,例如: 作为变量的值: // 定义一个闭包myClosure,它接收一个参数it,返回参数的两倍 def myClosure = { it * 2 } // 使用闭包

    1.2K10

    今天 1024,为了不 996,Lombok 用起来以及避坑指南

    Lombok简介、使用、工作原理、优缺点 Lombok 项目是一个 Java 库,它会自动插入编辑器和构建工具中,Lombok 提供了一组有用的注解,用来消除 Java 类中的大量样板代码。...翻译之后就是: Lombok 项目是一个 Java 库,它会自动插入您的编辑器和构建工具中,简化您的 Java 。...不需要再写另一个 getter、setter、toString 或 equals 方法,带有一个注释的您的类有一个功能全面的生成器,可以自动化您的日志记录变量,以及更多其他功能 官网链接 使用 添加maven...注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法,同时可以指定生成的 setter 方法的访问级别 @Getter 使用方法同 @Setter,区别在于生成的是 getter...,无参构造器无法处理 @NonNull,但在序列化/反序列化的还是需要提供无参的 当团队决定不再使用 Lombok 的时候,可以使用 Lombok 插件的 Delombok 一键去除,在 Refactor

    99730

    Java 编程技巧之数据结构

    所以,在日常编码中,可以使用 HashSet 判断主键是否存在。 案例:给定一个字符串(不一定全为字母),请返回第一个重复出现的字符。...从性能上考虑, HashMap 中的链表出现越少,即哈希冲突越少,性能也就越好。所以,在日常编码中,可以使用 HashMap 存取键值映射关系。...保存线程上下文对象,避免多层级参数传递 这里,以 PageHelper 插件的源代码中的分页参数设置与使用为例说明。...定义模型类实现成对结果的返回 函数实现代码: /** 点和距离类 */ @Setter @Getter @ToString @AllArgsConstructor public static class...而在 Java 语言中,也有一个类似的功能叫泛型(generic)。在编写类和方法的时候,一般使用的是具体的类型,而用泛型可以使类型参数化,这样就可以编写更通用的代码。

    1.9K10

    Lombok技术揭秘 _ 自动生成带代码的幕后机制

    Lombok简介 1.1 Lombok是什么 引入官方解释: Project Lombok 是一个 JAVA 库,它可以自动插入编辑器和构建工具,为您的 JAVA 锦上添花。...再也不要写另一个 getter/setter 或 equals 等方法,只要有一个注注解,你的类就有一个功能齐全的生成器,自动记录变量,等等。...@Value 用于创建不可变的值对象( Value Object )类.即所有属性都是final的,并且只有 getter 方法,没有 setter 方法。...有兴趣可以学习 JavaParser 源码, 了解将 Java 源代码解析生成成一个抽象语法树( AST ),这个树形结构表示了代码的 语法结构包括类、方法、变量、语句等等过程。...Lombok 是一个 JAVA 库,它通过注解处理器生成常见的 JAVA 代码,如 getter、setter、equals、hashCode 等,以简化开发工作。

    1.5K30

    Scala专题系列(五):类与对象

    value += 1 } // 方法默认是public的 def age() = value } 在Scala中,类并不声明为public,类都具有公有可见性 使用类需要做的就是构造对象并按照通常的方式来调用方法...也可以用定制的getter/setter方法替换掉原来的字段的定义,而不必修改使用的客户端——这就是所谓的“统一访问原则”。...,如上面的例子中,name和age成为person类的字段 2:主构造器会执行类定义中的所有语句 构造参数也可以是普通的方法参数,不带val或var,这样的参数如何处理取决于它们在类中如何被定义。...如果不带val或var的桉树至少被一个方法所使用,那么它将是字段 辅助构造器 和java一样,Scala也可以有任意多的构造器 1:辅助构造器的名称为this,在java中辅助构造器的名称与类名相同 2...在集合那个篇章里面,有讲到一个val list = List("1","2") 其实这个内部就是一个伴生类, 在java中,会用到既有实例方法又有静态方法的类,在Scala中,可以通过类和与类名同名的"

    86230

    Java GetterSetter “防坑指南”

    Getter/Setter 在 Java 中被广泛使用,看似简单,但并非每个 Java 开发人员都能很好理解并正确实现 Getter/Setter 方法。...因此,在这篇文章里,我想深入讨论 Java 中的 getter 和 setter 方法,请跟随我一起来看看吧。 一个简单的例子 下面的代码展示了 Getter/Setter 方法的基本使用。...直接引用了一个参数变量 scores,这意味着两个变量都指向了内存中同一个对象,即 myScores 数组对象。...,你可以直接自由设置或者返回值,因为 Java 是将一个基本变量的值复制到另一个变量中,而不是复制对象的引用,因此,错误二、三都能够轻松避免。...Getter/Setter 方法 java.util.Date 类实现了 Object 类中的 clone() 方法。

    1.8K40
    领券