Java是面试对象的编程方式,认为万物皆是对象。抛开静态代码块和内部类,我们可以认为对象其实就是由属性(包括类属性和实例属性)和方法(类方法和实例方法)组成,通过这两者来完成对象的职责(也就是对外暴露的功能)。
类的属性可以认为是一些状态,方法通过操作这些状态来达到不同的处理结果。外部调用这些类时,需要先配置好这个类的状态,以求得到符合要求的结果,这也就是说,不同的调用方在调用这个类时,会因为配置了不同的状态而得到不同的结果;这也说明了有状态的类与调用方存在较强的耦合。
那如果类没有属性,或者这些属性是不需要调用方维护的(一旦固定,整个生命周期中就不会再改变,例如单例模式),那么这个类与调用方的耦合性就降到了最低,任何调用方调用该类时,不需要维护状态,这种类可以设计成工具类,例如StringUtils类,或者设计成单例模式的类。
类的另一个极端就是只有属性,没有方法(不将setter和getter方法视为方法,因为它们没有业务逻辑,只是单纯的对外暴露属性),这种类就是我们所说的实体类。属性的概念再往宽泛了讲,其实就是一些静态的数据,可以保存在内存,数据库,Nosql,消息系统,静态页面等载体中,它用于驱动应用的多态化;另一方面,方法可以认为是动态的处理逻辑,主要就是控制数据的流动。因此,软件 = 数据结构 + 算法 是有道理的。
言归正传,我们要讲解的是springboot的自动化配置,首先