- 开放接口层:该层主要用于封装Service方法,将其对外暴露为RPC接口,或者通过Web封装成HTTP接口,同时还可在此层进行网关安全控制、流量控制等操作,是系统对外提供服务的入口。
- 终端显示层:这是各个端的模板渲染并执行显示的层级,通俗来说就是前端渲染的页面,比如Web项目中的JSP页面、Velocity模板渲染的页面,或者移动端的界面等,负责将数据展示给用户。
- Web层:也称为控制层(Controller层)。主要负责对访问进行控制和转发,接收来自客户端的请求参数,并进行基本的参数校验。同时,它会调用Service层的方法来处理业务逻辑,最后将Service层返回的结果传给终端显示层或返回给客户端。例如,在Spring MVC框架中,Controller类通过注解来映射URL请求,处理请求并返回相应的数据。
- Service层:即业务逻辑层,是项目的核心层次之一,负责实现具体的业务逻辑。它通过调用Mapper层的数据访问方法,对数据进行处理和业务规则的应用,如数据的计算、校验、业务流程的控制等。Service层通常由接口和实现类组成,接口定义了业务方法,实现类中编写具体的业务逻辑代码,这样有利于代码的维护和扩展。
- Manager层:通用业务处理层,常用于第三方平台能力封装,比如对微信支付、支付宝支付等第三方支付平台接口的封装。也可用于中间件、缓存方案的通用处理,如Redis缓存的统一操作,还能对多个Mapper进行逻辑组合,为Service层提供更原子化的服务接口。
- Mapper层:也叫数据访问层(DAO层)。它是与数据库进行交互的核心部分。负责执行SQL语句,实现对数据库中数据的增、删、改、查操作。通常会使用MyBatis等持久层框架,通过Mapper接口和对应的XML映射文件或注解来定义数据库操作方法和SQL语句。
此外,Java项目中还可能包含以下层次或相关部分:
- 实体层(Entity Layer):也称为Model层或POJO层,用于表示数据库的数据结构,其中的实体类与数据库表一一对应,实体类的属性对应数据库表的字段。这些实体类会被Mapper层用于数据的读写操作,也会被Service层用于业务逻辑处理过程中的数据传递和操作。
- 数据传输对象层(DTO层):主要用于不同层或系统之间的数据传输。当Service层或Manager层从数据库获取到Entity对象后,可能需要根据业务需求,将其中部分属性或经过处理后的属性组装成DTO对象,然后传输给上层或其他系统,以避免将数据库相关的实体直接暴露出去,提高数据的安全性和灵活性。
- 视图对象层(VO层):是Controller层返回给视图层进行渲染的对象。它通常只包含视图层需要展示的数据,对数据进行了筛选和格式化,以便于视图层更好地展示数据,减少视图层的处理逻辑。
- 工具层(Util Layer):存放项目中通用的工具类,如日期处理工具类、字符串处理工具类、加密工具类等,这些工具类可以被各个层次的代码调用,提高代码的复用性。
- 配置层(Config Layer):用于存放项目的各种配置文件,如Spring配置文件、MyBatis配置文件、数据库连接配置等,通过这些配置文件来管理项目中的各种参数和组件的装配等。
以下是一个简单的用户管理系统应用实例,来说明各层的作用和交互:
- 实体层:定义
User
实体类,对应数据库中的用户表,包含id
、name
、email
等属性,用于表示用户信息。 - Mapper层:定义
UserMapper
接口,包含insertUser
、deleteUser
、getUserById
等方法,通过MyBatis的XML配置文件或注解来实现这些方法对数据库的操作,如向用户表插入数据、根据ID查询用户等。 - Service层:创建
UserService
类,实现用户相关的业务逻辑。它会注入UserMapper
,在addUser
方法中调用UserMapper
的insertUser
方法来添加用户,在getUserById
方法中调用UserMapper
的getUserById
方法获取用户信息等。 - Controller层:编写
UserController
类,通过注解映射URL,如/addUser
用于处理添加用户的请求。在对应的处理方法中,接收前端传来的用户数据,调用UserService
的addUser
方法添加用户,然后将结果返回给前端。 - 终端显示层:可以是一个HTML页面,通过表单输入用户信息,发送请求到Controller层,然后接收Controller层返回的结果,展示用户添加成功或失败的信息。
通过这种分层架构,使得Java项目结构清晰,各层职责明确,提高了项目的可维护性、可扩展性和代码的复用性。
Java 项目架构,Java 分层设计,控制器层,服务层,数据访问层,Model 层,持久层,表现层,业务逻辑层,Java Web 项目结构,Spring MVC,Spring Boot 项目层次,MyBatis 数据访问,DTO 层,Java 项目层次最佳实践
代码获取方式 pan.quark.cn/s/14fcf913b…