Spring框架
一个轻量级的控制反转和面向切面的容器框架
IoC(Inversion of control)控制反转
容器在对象初始化时,不等对象请求就主动将依赖传递给他
1.谁控制谁:IOC容器控制了对象
2.控制什么:控制了外部资源获取
3.为什么是反转:IOC容器帮助查找及注入依赖对象,对象只是被动的接受依赖对象
4.那些方面反转:依赖对象获取被反转
AOP(Aspect Oriented Programming)面向切面编程
分离应用的业务逻辑和系统级服务,应用对象只实现=》完成业务逻辑
容器
Spring包含并管理应用对象的配置和生命周期(在这个意义上它是一种容器)
框架
Spring可以将简单的组件配置、组合成为复杂的应用。
Spring的优点:
1、 简化开发 ,使得Java EE 变得更容易
2、 AOP(Aspect Oriented Programming)支持
3、 方便测试
4、 集成各种优秀框架
5、 降低JAVA EE API的使用难度
6、 学习范例
5个常用的spring框架
Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶。它包括SpringMVC、SpringBoot、Spring Cloud、Spring Cloud Dataflow等解决方案。
很多研发人员把spring看作心目中最好的java项目,没有之一。
程序耦合度–模块之间关联程度的度量
耦合的强弱取决于模块间接口的复杂性、调用模块的方式以
及通过界面传送数据的多少。
模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数
据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差
好的程序——高内聚低耦合
耦合分类(按耦合度从大到小排序)
内容耦合 > 公共耦合 > 外部耦合 > 控制耦合 > 标记耦合 > 数据耦合
设计模式的六大原则
1、开闭原则(Open Close Principle)
对扩展开放,对修改关闭。
2、里氏代换原则(Liskov Substitution Principle)
任何基类可以出现的地方,子类一定可以出现。
实现开闭原则的关键步骤就是抽象化,而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
3、依赖倒转原则(Dependence Inversion Principle)
这针对接口编程,依赖于抽象而不依赖于具体。
4、接口隔离原则(Interface Segregation Principle)
使用多个隔离的接口,比使用单个接口要好
降低类之间的耦合度
5、迪米特法则,又称最少知道原则(Demeter Principle)
最少知道原则是指:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
6、合成复用原则(Composite Reuse Principle)
合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。
工厂模式
工厂模式(Factory Pattern) 是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
单例模式
单例模式(Singleton Pattern) 是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
- 单例类只能有一个实例。
- 单例类必须自己创建自己的唯一实例。
- 单例类必须给所有其他对象提供这一实例。
分类:
- 懒汉式:加载时不产生单例 调用getInstance方法时才创建
- 饿汉式:类一旦加载就创建一个单例
SpringIOC方式 实现对程序解耦
BeanFactory 才是 Spring 容器中的顶层接口。
ApplicationContext 是它的子接口。
通过创建beans.xml配置文件 让Spring 管理dao层和Service的业务实例。
- bean 标签:用于配置让 spring 创建对象,并且存入 ioc 容器之中
constructor-arg标签 构造器注入 填写参数
ref属性 指向 ioc 容器中另一个对象
index属性 参数索引
property标签 对象属性 set方法注入 - id 属性:对象的唯一标识。
- class 属性:指定要创建对象的全限定类
- scope属性:指定对象的作用范围。
1.singleton :默认值,单例的
2.prototype :多例的 - property标签:
- set标签
- array标签
- list标签
- map标签
- props标签
依赖注入:Dependency Injection
它是 spring 框架核心 ioc 的具体实现。我们的程序在编写时,通过控制反转,把对象的创建交给了 spring,但是代码中不可能出现没有依赖的情况。ioc 解耦只是降低他们的依赖关系,但不会消除。那这种业务层和持久层的依赖关系,在使用 spring 之后,就让 spring 来维护了。简单的说,就是坐等框架把持久层对象传入
业务层,而不用我们自己去获取。