《Spring快速入门》读书笔记 第1章 Java基础

写在前面:这些笔记是我个人读书所作整理,类似于草稿,并没有刻意去整理成完整的资料。写这些笔记的缘由是感觉Spring的内容实在太多,很容易遗忘,现做一些笔记便于自己复习。这里主要是列举一些需要记忆的常用用法、配置等,并不会介绍Spring中的各种概念。如果能帮助到大家学习Spring,不胜荣幸。书名为《Spring快速入门》,崔彦威 卢欣欣 王倩 著,清华大学出版社。

题外话:大一暑假,补习完本学期没有上完的Java基础内容(《Java 2实用教程(第5版》,耿祥义 张跃平 编著)后几章之后,产生了学习框架的想法。因为个人不喜看网课,花几个小时浏览了一圈某宝相关书籍目录,最后选定了这本书,从Java注解机制开始入门,感觉比较适合自己这种零基础的小白。目前读完第五章,读的过程中感觉有些吃力,一边看书一边百度,一边敲代码实践,还是能够大体理解。虽然书本内容有些许瑕疵,但是从作者对于Spring中各种概念的介绍来看,还是能感觉作者是在用心写作。感谢作者。

以下内容均为读书过程中整理而来。刚入门Spring的小白,如有错误之处请多指教。


        第1章在Java基础上补充了一些注解与反射的知识,以便后续的学习。

1.1 注解

        包含在java.lang.annotation包中。

内置注解

        @Deprecated:修饰过时元素。无参数。
        @Override:修饰重写方法(JDK1.7前不支持修饰实现implements接口方法)。无参数。
        @SuppressWarnings:阻止警告,有一个参数。例如屏蔽IDEA中给出的各种警告,直接在该类开头加上@SuppressWarnings("all")即可。常用参数还可以填"unused","serial","unchecked"等等。同时实现多个参数,以数组形式填入即可,如@SuppressWarnings({"unused","unchecked"})
        @SafeVarargs:用在参数为泛型的方法名前,当确保传入参数合法时,可用此注解阻止编译器产生unchecked这样的警告。无参数。
        @FunctionalInterface:(JDK1.8)函数式接口注解,只能标记在有且仅有一个抽象方法的接口上。例如Runnable接口。无参数。

元注解

@Retention:定义注解的生命周期。有一个参数。常量包含在RetentionPolicy类中。
        RetentionPolicy.SOURCE:在编译阶段丢弃。
        RetentionPolicy.CLASS:在类加载的时候丢弃。
        RetentionPolicy.RUNTIME:始终不会丢弃。
@Target:注解用于什么地方。有一个参数。常量包含在ElementType类中。
        ElementType.CONSTRUCTOR:用于描述构造器。
        ElementType.FIELD:成员变量、对象、属性(包括enum实例)。
        ElementType.LOCAL_VARIABLE:用于描述局部变量。
        ElementType.METHOD:用于描述方法。
        ElementType.PACKAGE:用于描述包。
        ElementType.PARAMETER:用于描述参数。
        ElementType.TYPE:用于描述类、接口(包括注解类型)或enum声明。
@Documented:表示是否将注解信息添加在Java文档中。无参数。
@Inherited:表示该注解可以被该类的子类继承。无参数。
@Repeatable:表示该注解可重复使用。无参数。

自定义注解

        注意参数成员只能用基本类型以及String、Enum、Class、annotations等及其数组,访问权只能为public或默认。

1.2 反射

        一个描述类的类。

获取方式

        通过类名获取,类名.class。
        通过对象获取,对象.getClass()。
        通过全类名获取,举例:Class.forName("com.jdbc.mysql.Driver")。

Class类常用的方法

        无需刻意记忆,基本上就是一些getter(实例用newInstance),直接凭感觉写出对应英文单词即可。有以下几个关键词:
        Instance:实例。
        Interface:接口。
        ClassLoader:类加载器。
        Field:属性(字段)。
        Constructor:构造方法。
        Method:方法。
        Declared:加该词时表明获取所有访问权,不加时仅获取public类型属性/方法/构造方法。
        举几个例子:
        获取属性/方法/构造方法时,使用getField(String),getMethod(String, Class[]),getConstructor(Class[])。使用String指定属性/方法名称。使用Class类数组指定方法参数(因为方法重载的存在,必须同时给定方法名和参数类型才能确定一个方法)。方法名末尾加s变复数,同时删除所有参数,返回所有属性/方法/构造方法的数组。(Field[]/Method[]/Constructor<?>[])。如getFields()。Declared关键词加中间,也可变复数。如getDeclaredFields(),getDeclaredField(String)。另外说明一下newInstance方法:就类似于平时的new XXX()。参数为空调用默认构造方法,参数为Object数组调用对应构造方法,返回当前类的一个实例。

        通过以上操作可实现:通过类名创建对象,通过方法名执行方法,这样就可以实现基于XML的配置。这里需要注意private私有方法/构造方法的执行,private私有属性的读写,在操作前需要加上一句setAccessible(true),再调用invoke执行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值