Java培训笔记 09-Spring框架
Tier对比Layer
- Tier物理层:关于系统的基础设施的物理方面的架构。比如数据服务是Tomcat或Jboss,数据库是MySQL或Oracle。
- Layer逻辑层:包含构成程序解决方案元素的逻辑架构。
五个不同物理层及他们对应职责
创建型模式包含工厂模式和单例模式。
工厂模式
用于处理关于对象的创建,将复杂的逻辑参与到客户的对象创建中,根据提供的数据返回多个类中的一个实例。
Spring提供了BeanFactory类来负责创建不同类型的对象。比如表现组件、模块组件、持久化组件。
单例模式
是spring的默认模式。目的:
- 单例模式确保某个类只有一个实例,自行实例化,并且向整个系统提供一个全局的接入点。
- 控制对象的生成,一般控制在一个,但合适情况下也可以创建多个对象。
- 增加自身对资源控制的链接,比如数据库链接。
在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。
Spring框架用例:所有Beans(java classed)默认被单例化定义在Spring配置文件中。
详细看这里理解
Java EE设计模式
- 表现层:前端控制器模式(主要管理请求的操作和跳转的分支处理,对请求进行集中控制逻辑处理,为发生的所有请求的共同处理逻辑提供一个单独的地址)
- 业务层:业务代表模式(允许表现层访问业务逻辑层,允许表现层和业务处理之间相互影响),业务对象(BO)(用来描述域模型的概念,提供集成了主要对象模型)
- 集成层:数据访问对象(DAO)(封装了所有资源层,对客户隐藏数据访问的具体实现细节,提供了一个系统的API来应对客户潜在的各种变更)
MVC架构
model层可以处理业务逻辑,并且从底层取出数据
控制反转(IoC)
是在框架上使用的一种概念,应用于轻量级容器开发,容器作为应用的主要程序,容器调用用户默认的方法来适应框架。类型如下
依赖查找:应用寻找它所依赖的对象
依赖注入:完全负责依赖关系的查找和组件的创建,应用实体通过应用的依赖组件和容器的实体建立联系,容器支持应用从容器中独立出来。(和依赖查找比起来,为容器下层的应用提供了更多的独立性)
设置注入:组件依赖通过JavaBean属性来配置管理,实体被容器实例化之后Setter方法能够立即被调用。依赖都在配置文件里管理,只有真正实现时才关心细节,Spring把之前代码里的依赖解耦,放到配置文件里。(设置注入取决于配置的值,并且通过JavaBean的属性来表现合作关系)
构造器注入:通过构造函数的参数来配置组件依赖。(构造器注入取决于配置的值,并且通过构造函数的属性来表现合作关系)
JavaWeb三层架构
三层架构就是将整个业务应用,从上至下划分为:
- 界面层/表示层(User Interface layer):位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。
- 业务逻辑层(Business Logic Layer):负责关键业务的处理和数据的传递。复杂的逻辑判断和涉及到数据库的数据验证都需要在此做出处理。主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
- 数据访问层(Data access layer):主要负责对数据库的直接访问,为业务逻辑层提供数据,根据传入的值来操作数据库,增、删、改、查。
区分层次的目的即为了“高内聚低耦合”的思想。
ORM
对象-关系映射(Object-Relational Mapping,简称ORM)。
简单地说,就是把没有对象概念的关系型数据库中的数据,模拟成对象概念,还保留着他们之间的关联关系。面向对象的代码自动转换成SQL语句,并更新所有的关联表格。
对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。
JavaBean和entity的区别
一些JavaBean中会封装一些简单逻辑,可以有其它的方法。
entity实质是一个简化的javabean ,只有私有属性加 set、get方法
组合和聚合
组合时不可分割的,相当于人和手;
聚合是可分割的,相当于教室和板凳