本篇文章将从结构框架入手,系统介绍一个完整Java程序的结构步骤,不涉及JAVA基础代码学习。
在本文章中先简单介绍Maven、Spring、MyBatis三种Java类型。
首先我们先来了解Java程序的类型,不同类型结构略有区别。Java程序的类型可以根据多个分类方式进行划分,以下是一些常见的分类和简要解释:
构建工具类型:
Web框架类型:
数据访问类型:
测试框架类型:
下面我将更详细地解释每种类型,并说明它们之间的联系和通常如何结合使用:
Maven:
Maven是一个基于项目对象模型(POM)的构建工具。简化了项目的构建、测试和部署过程,并提供了依赖管理、插件系统和生命周期管理等功能。Maven的主要特点是他的约定优于配置的理念。这意味着他会根据定义的规则来处理大部分情况,减少了配置文件的复杂性;
Gradle:
Gradle提供了更高的灵活性和定制性。与Maven不同,Gradle使用Groovy或Kotlin作为DSL(领域特定语言),使得构建脚本更加易读和可维护。Gradle支持增量构建和多项目构建,能够更好的处理大型项目;
Spring:
Spring是一个全面的Java企业级应用开发框架。最初是作为一个替代EJB(Enterprise JavaBeans)的轻量级解决方案而诞生的。Spring的核心特性包括依赖注入、AOP(面向切面编程)、模块化开发等。Spring的生态系统非常庞大,包含了许多子项目和模块,例如Spring Boot、Spring Data、Spring Security等;
Struts:
Struts是一个基于MVC(模型-视图-控制器)模式的Web应用程序框架。它主要用于构建Web应用的前端部分,提供了一个清晰的分层结构来处理请求和响应。Struts框架的特点是易于学习和使用,适合中小型项目;
Play Framework:
Play Framework是一个使用Scala和Java编写的Web框架,旨在提供更快的开发速度和更好的开发体验。支持异步编程、实时编译和热重载等功能,适合需要快速迭代和实施反馈的项目;
Hibernate:
Hibernate是一个ORM(对象关系映射)框架,他将Java对象与关系型数据库表之间建立映射关系。这样,开发者可以使用面向对象的方式来操作数据库,无需直接编写SQL语句。
Hibernate提供了大量的高级特性,如缓存、延迟加载和二级缓存等;
MyBatis:
MyBatis是一个持久层框架,它提供了SQL映射和POJO(Plain Old Java Object)映射两种方式来访问数据库。相比Hibernate,MyBatis更灵活,因为它允许开发者手动编写SQL语句,并且支持存储过程和动态SQL
JUnit:
JUnit是一个流行的单元测试框架,用于编写和运行单元测试。它提供了断言、测试套件和测试运行器等功能,帮助开发者验证代码的正确性。JUnit是Java生态系统中最早的测试框架之一,仍然广泛使用
TestNG:
TestNG是一个更灵活的测试框架,支持多种类型的测试(如单元测试、集成测试、端到端测试等)。它提供了强大的报告功能和参数化测试能力。TestNG也支持并行测试和分布式测试。
Maven型Java项目的经典框架结构通常如下:
1.项目根目录:
2.src目录结构:
3.pom.xml文件结构:
4.依赖管理:
Maven通过pom.xml文件中的
Maven会自动下载这些依赖项,确保项目的构件和运行环境一致
5.构件生命周期:
Maven定义了一系列构件阶段,称为生命周期。每个生命周期包含多个阶段,例如:
以“检测文件敏感程度”这一场景举例,解释下述结构树
sensitive-file-detector/
├── pom.xml
└── src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ ├── SensitiveFileDetector.java
│ │ ├── FileAnalyzer.java
│ │ └── SensitiveContentChecker.java
│ └── resources/
│ └── sensitive_keywords.txt
└── test/
├── java/
│ └── com/
│ └── example/
│ ├── SensitiveFileDetectorTest.java
│ ├── FileAnalyzerTest.java
│ └── SensitiveContentCheckerTest.java
└── resources/
└── test_sensitive_keywords.txt
以下是 Spring 型 Java 项目的典型框架结构:
1.项目根目录:
2.src目录结构:
3.pom.xml文件结构:
pom.xml文件的基本结构同上,可参考maven的基本结构
4.Spring Boot应用程序结构:
@SpringBootApplication
:标注在主类上,表示这是一个 Spring Boot 应用程序Controller
、@RestController
、@Service
、@Repository
等注解:用于定义控制器、服务和数据访问层的组件application.properties
或 application.yml
:Spring Boot 应用程序的配置文件,用于配置数据库连接、服务器端口号等信息index.html
或其他静态资源文件:存放在 src/main/resources/static
目录下,用于提供 Web 应用程序的静态内容templates
目录下的模板文件:用于渲染动态 Web 页面5.依赖管理
Spring 项目通常依赖于多个 Spring 框架的组件,例如 Spring Core、Spring Web、Spring Data JPA 等。这些依赖关系可以在 pom.xml
文件中通过
元素进行管理
6.测试
Spring 项目的测试通常使用 JUnit 和 Spring TestContext Framework。测试类需要使用 @RunWith(SpringRunner.class)
和 @ContextConfiguration
注解来配置测试环境
sensitive-file-detector/
├── pom.xml
└── src/
├── main/
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ ├── SensitiveFileDetectorApplication.java
│ │ ├── service/
│ │ │ └── SensitiveFileService.java
│ │ ├── repository/
│ │ │ └── SensitiveFileRepository.java
│ │ └── util/
│ │ └── FileUtil.java
│ └── resources/
│ ├── application.properties
│ └── sensitive_keywords.txt
└── test/
├── java/
│ └── com/
│ └── example/
│ ├── SensitiveFileDetectorApplicationTests.java
│ ├── SensitiveFileServiceTest.java
│ └── SensitiveFileRepositoryTest.java
└── resources/
└── test_sensitive_keywords.txt
SensitiveFileService.java
: 这是一个服务类,负责调用其他组件来实现业务逻辑。例如,它可能调用 SensitiveFileRepository
来读取敏感词汇列表,并调用 FileUtil
来读取文件内容SensitiveFileRepository.java
: 这是一个数据访问层的接口,定义了读取敏感词汇列表的方法。它可能使用 Spring Data JPA 或其他技术来实现数据存储和检索FileUtil.java
: 这是一个实用工具类,提供了读取文件内容的方法。它可以帮助服务层或控制器层读取文件application.properties
: 这是一个 Spring Boot 应用程序的配置文件,用于配置数据库连接、服务器端口号等信息sensitive_keywords.txt
: 这是一个文本文件,包含了敏感词汇列表SensitiveFileDetectorApplicationTests.java
: 这是一个集成测试类,用于测试整个应用程序的功能SensitiveFileServiceTest.java
和 SensitiveFileRepositoryTest.java
: 这些是单元测试类,分别用于测试服务层和数据访问层的组件test_sensitive_keywords.txt
: 这是一个用于测试的敏感词汇列表文件MyBatis是一个流行的持久化框架,提供了对数据库的抽象和操作。以下是MyBatis型Java项目的典型框架结构:
1.项目根目录:
2.src目录结构:
mybatis-config.xml
:MyBatis 的全局配置文件application.properties
或 application.yml
:Spring Boot 应用程序的配置文件,用于配置数据库连接等信息mapper/
:存放 MyBatis 的映射文件(*.xml)目录test/
:存放项目的测试源代码和资源文件3.pom.xml
pom.xml结构同上
4.MyBatis配置文件结构
:配置文件的根元素。
:全局设置,例如日志级别、缓存等。
:类型别名,用于简化 Java 类型和数据库表的映射。
:类型处理器,用于处理特定类型的数据。
:对象工厂,用于创建结果对象。
:插件配置,例如分页插件等5.MyBatis映射文件结构
:映射文件的根元素。
、
、
和
:定义了对数据库的操作,例如查询、插入、更新和删除。
:结果映射,用于将查询结果映射到 Java 对象。
:参数映射,用于将方法参数映射到 SQL 语句中的参数6.依赖管理
MyBatis 项目通常依赖于多个组件,例如 MyBatis 本身、数据库驱动程序等。这些依赖关系可以在 pom.xml
文件中通过
元素进行管理
7.测试
MyBatis 项目的测试通常使用 JUnit 和 Spring TestContext Framework。测试类需要使用 @RunWith(SpringRunner.class)
和 @ContextConfiguration
注解来配置测试环境