一、pom.xml 文件解析
基于Maven构建的SpringBoot项目是一种使用Maven作为构建工具,SpringBoot作为框架的项目。SpringBoot是一个开源的Java框架,用于简化Spring应用程序的创建和开发过程。Maven是一个项目管理和构建自动化工具,用于Java项目的构建、依赖管理和文档生成。
代码语言:javascript复制├── src
│ ├── main
│ │ ├── java/cn/zwz/demo
│ │ │ ├── ZwzApplication.java
│ │ │ └── ...
│ │ └── resources
│ │ ├── application.yml
│ │ └── ...
│ └── test
│ ├── java/cn/zwz/demo
│ │ └── ...
│ └── resources
└── pom.xml
pom.xml 样例文件如下。
代码语言:javascript复制<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-project</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<!-- 定义项目属性 -->
</properties>
<dependencies>
<!-- 项目依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<!-- 构建配置 -->
</build>
<repositories>
<!-- 仓库配置 -->
</repositories>
<pluginRepositories>
<!-- 插件仓库配置 -->
</pluginRepositories>
<distributionManagement>
<!-- 部署配置 -->
</distributionManagement>
<reporting>
<!-- 报告配置 -->
</reporting>
</project>
- project 是根元素。
- modelVersion 指定了 POM 模型的版本。
- groupId 定义了项目的组织标识。
- artifactId 定义了项目的唯一标识。
- version 定义了项目的版本号。
- name:定义了项目名称。
- description:定义了项目备注。
- properties 定义了可重用的属性。
- dependencies 列出了项目的所有依赖。
- build 包含了项目构建时的配置。
- repositories 定义了依赖的仓库。
- pluginRepositories 定义了插件的仓库。
- distributionManagement 定义了项目构建的输出的部署配置。
- reporting 定义了项目报告的特殊配置。
二、项目所需依赖
2.1 spring-boot-starter-web(*熟悉)
Spring Boot Starter Web 是一个用于构建基于 Spring 的 Web 应用程序的依赖项,它自动配置了嵌入式 Tomcat 或 Jetty 服务器,以及 Spring MVC 和 Spring WebFlux 框架。这个依赖项简化了 Web 应用程序的配置和开发过程,提供了对 RESTful API、WebSocket 和其他 Web 服务的支持。通过使用 Spring Boot Starter Web,开发者可以快速搭建起一个功能完备的 Web 应用程序,而无需手动配置大量的 XML 或 Java 配置文件。此外,它还整合了其他常用的库,如 Jackson 用于 JSON 处理、Thymeleaf 用于模板渲染等,进一步简化了开发工作。
代码语言:javascript复制@SpringBootApplication
@MapperScan(basePackages = {"com.dao"})
public class SpringbootSchemaApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(SpringbootSchemaApplication.class, args);
}
}
2.2 mybatis-spring-boot-starter(*熟悉)
MyBatis-Spring-Boot-Starter 是一个集成了 MyBatis 和 Spring Boot 的依赖库,它简化了在 Spring Boot 应用程序中使用 MyBatis 的配置和集成过程。这个依赖库提供了自动配置功能,使得开发者可以轻松地将 MyBatis 与 Spring Boot 应用程序结合使用,而无需手动配置数据源、事务管理器等。通过使用 MyBatis-Spring-Boot-Starter,开发者可以更加专注于业务逻辑的实现,提高开发效率。此外,它还支持 MyBatis 与 Spring Data JPA 的集成,使得开发者可以在同一个应用程序中同时使用 MyBatis 和 Spring Data JPA。
代码语言:javascript复制<mapper namespace="com.example.mapper.UserMapper">
<!-- 查询用户 -->
<select id="selectUser" parameterType="int" resultType="com.example.entity.User">
SELECT id, username, email
FROM users
WHERE id = #{id}
</select>
</mapper>
2.3 spring-boot-starter-jdbc(*熟悉)
Spring Boot Starter JDBC 是一个用于简化 Spring Boot 应用程序中 JDBC 配置的依赖。它自动配置了数据源和 JdbcTemplate,使得开发者可以轻松地使用 JDBC 进行数据库操作。这个依赖包含了 JDBC API、数据库连接池(如 HikariCP、Tomcat JDBC 或 Apache DBCP2)和 Spring 的 JdbcTemplate。通过添加这个依赖,Spring Boot 会自动配置数据源和事务管理器,开发者只需在 application.properties 或 application.yml 文件中配置数据库连接信息,即可快速开始使用 JDBC 进行数据库操作。
代码语言:javascript复制public class demo1 {
/*
1. 导入mysql驱动包
2. 注册驱动
3. 建立与mysql的连接驱动
4. 向mysql发送sql语句
5. 接收返回效果
6. 关闭连接通道
*/
public static void main(String[] args) {
try {
// 初始化驱动程序,这样就可以打开与数据库的通信信道
Class.forName("com.mysql.cj.jdbc.Driver"); //以java反射机制来创建此类对象
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//characterEncoding=utf8编码设置,连接mysql8 必须设置时区Timezone=Asia/Shanghai
String url = "jdbc:mysql://127.0.0.1:3306/t001?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";
try {
//Connection接口 实际返回的mysql的实现类对象
Connection connection = DriverManager.getConnection(url,"root","123456");
//Statement 对象 发送sql
Statement statement = connection.createStatement();
//statement.executeUpdate(); statement.executeQuery();
statement.executeUpdate("insert into major(mname)values('网络')");
//statement.executeQuery();
statement.close();
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
2.4 mysql-connector-java(*熟悉)
MySQL Connector/J 是一个用于连接 Java 应用程序和 MySQL 数据库的 JDBC 驱动程序,它提供了一个简单易用的 API,允许开发者在 Java 应用程序中执行 SQL 语句、事务和存储过程等操作。这个驱动程序遵循 JDBC 4.0 规范,支持自动重连、连接池、SSL 加密等高级功能。
代码语言:javascript复制spring:
datasource:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/t101?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT+8
username: root
password: 123456
2.5 shiro-spring
Shiro-Spring依赖是一个集成了Apache Shiro安全框架与Spring框架的库,它允许开发者在Spring应用程序中轻松地实现认证、授权、会话管理和安全策略等功能。通过使用shiro-spring依赖,开发者可以利用Shiro提供的丰富安全特性,同时保持Spring框架的灵活性和易用性。这个依赖简化了在Spring项目中集成Shiro的过程,使得开发者可以更加专注于业务逻辑的实现,而不必过多地关注底层的安全细节。使用shiro-spring依赖,可以提高开发效率,降低安全风险,并确保应用程序的安全性。
2.6 mybatis-plus(*熟悉)
MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它继承了 MyBatis 的所有特性,同时加入了强大的功能,如自动填充、乐观锁、逻辑删除、性能分析等。MyBatis-Plus 的依赖主要包括:mybatis-plus-boot-starter(核心依赖)、mybatis-plus-extension(提供扩展功能,如分页插件、性能分析插件等)、mybatis-plus-annotation(提供注解支持,方便在实体类和 Mapper 接口上使用 MyBatis-Plus 功能)以及 mybatis-plus-core(提供 MyBatis-Plus 的核心功能实现)。使用 MyBatis-Plus 可以大大简化数据库操作,提高开发效率。
2.7 mybatisplus-spring-boot-starter(*熟悉)
MyBatis-Plus-Spring-Boot-Starter 是一个集成了 MyBatis-Plus 和 Spring Boot 的依赖库,它简化了在 Spring Boot 项目中使用 MyBatis-Plus 的配置和使用过程。MyBatis-Plus 是一个 MyBatis 的增强工具,提供了诸如自动填充、性能分析、逻辑删除等高级功能,使得开发者在使用 MyBatis 时更加便捷高效。通过引入 MyBatis-Plus-Spring-Boot-Starter 依赖,开发者可以快速地将 MyBatis-Plus 集成到 Spring Boot 项目中,实现对数据库的高效操作和管理。
代码语言:javascript复制@Override
public PageUtils queryPage(Map<String, Object> params, Wrapper<XueshengEntity> wrapper) {
Page<XueshengView> page =new Query<XueshengView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public List<XueshengVO> selectListVO(Wrapper<XueshengEntity> wrapper) {
return baseMapper.selectListVO(wrapper);
}
@Override
public XueshengVO selectVO(Wrapper<XueshengEntity> wrapper) {
return baseMapper.selectVO(wrapper);
}
@Override
public List<XueshengView> selectListView(Wrapper<XueshengEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public XueshengView selectView(Wrapper<XueshengEntity> wrapper) {
return baseMapper.selectView(wrapper);
}
2.8 protobuf-java
Protobuf-java依赖是Google Protocol Buffers(简称Protobuf)的一个Java实现,它允许开发者使用一种与语言无关的格式来序列化结构化数据。Protobuf是一种灵活、高效的数据交换格式,广泛应用于数据存储、通信协议等领域。在Java项目中,引入protobuf-java依赖可以方便地实现跨平台、跨语言的数据交换。
2.9 commons-lang3
commons-lang3是一个功能强大的Java开源库,由Apache软件基金会开发和维护。它提供了许多用于处理字符串、数字、日期、集合等常见编程任务的工具类和方法。这个库的主要目的是简化Java开发,提高代码的可读性和可维护性。commons-lang3包含了诸如StringUtils、NumberUtils、DateUtils、ArrayUtils等实用工具类,它们提供了丰富的静态方法,使得处理各种数据类型变得更加简单。此外,commons-lang3还包含了一些用于对象比较、反射操作、异常处理等方面的功能,使得Java开发者能够更加高效地编写代码。
2.10 validation-api
Validation API 是 Java EE 规范的一部分,它提供了一组注解和接口,用于在 Java 应用程序中实现数据验证。Validation API 允许开发者通过使用 JSR 380 规范定义的约束注解(如 @NotNull、@Size、@Email 等)来声明性地指定验证规则,然后使用 Validator 接口对 JavaBean 对象进行验证。Validation API 支持自定义验证器,可以轻松地扩展和自定义验证逻辑。它还与 Bean Validation 1.1 规范兼容,可以与 Hibernate Validator 等第三方验证器库一起使用。在 Java Web 应用程序中,Validation API 可以与 Servlet API、JAX-RS 和其他 Java EE 技术无缝集成,为应用程序提供一致且可维护的数据验证机制。
2.11 commons-io
commons-io是一个Java开源库,由Apache软件基金会提供,主要用于简化文件和IO操作。它提供了许多实用的工具类和方法,如文件复制、文件比较、文件内容查找等,使得文件操作更加简单和高效。commons-io依赖广泛应用于Java项目中,特别是在需要处理文件和IO操作的场景下。通过使用commons-io库,开发者可以避免编写重复的代码,提高开发效率,同时保证代码的可读性和可维护性。
2.12 hutool-all(*熟悉)
Hutool是一个Java工具类库,提供了丰富的工具类,包括日期时间、文件操作、加密解密、HTTP客户端等。hutool-all是一个包含Hutool所有模块的依赖,可以方便地在项目中引入。使用hutool-all可以大大简化开发过程,提高开发效率。
简化前:
代码语言:javascript复制import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatExample {
public static void main(String[] args) {
// 创建一个SimpleDateFormat对象,定义格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
// 获取当前日期时间
Date now = new Date();
// 使用format方法格式化日期时间
String formattedDate = sdf.format(now);
// 打印格式化后的日期时间
System.out.println(formattedDate);
}
}
简化后:
代码语言:javascript复制String str = DateUtils.now();
2.13 fastjson(*熟悉)
Fastjson是一个Java语言编写的高性能功能完善的JSON库,用于将Java对象转换为JSON格式的字符串,以及将JSON格式的字符串解析为Java对象。Fastjson具有快速解析、低内存消耗、丰富的数据类型支持等特点,广泛应用于Web开发、移动应用、大数据处理等领域。
JSON样例1:
代码语言:javascript复制{
"name": "John Doe",
"age": 30,
"isEmployed": true,
"address": {
"street": "123 Main St",
"city": "Anytown",
"zipCode": "12345"
},
"phoneNumbers": ["123-456-7890", "987-654-3210"]
}
JSON样例2:
代码语言:javascript复制{
"database": {
"host": "localhost",
"port": 3306,
"username": "user",
"password": "password"
},
"server": {
"port": 8080,
"logLevel": "debug"
}
}
2.14 java-sdk
百度人工智能Java SDK提供了丰富的API,支持多种AI功能,如语音识别、语音合成、图像识别、自然语言处理等。