本项目目标是开发一个社区网站,拥有发帖、讨论、搜索、登录等一个正常社区拥有的功能。涉及到的版本参数为:
JDK1.8
Maven3.8.1(直接集成到IDEA)
Springboot 2.5.1
tomcat
参考网站(在使用框架过程中可能会看的开发文档):
https://mvnrepository.com/ 查找maven依赖
https://mybatis.org/mybatis-3/zh/index.html mybatis的官方文档,配置等都有说明
项目代码已发布到github https://github.com/GaoYuan-1/web-project
关于数据库文件,该篇博客中已有提到,可去文中github获取数据 MySQL基础篇(一)
本文第一篇只介绍了基础,在(二)中将会介绍如何实现登录界面等后续内容。最终将会把完整项目经历发布出来。
本系列主要介绍的是实战内容,对于理论知识介绍较少,适合有一定基础的人。
首先创建一个项目,可利用Spring Initializr
本人配置如下:
maven项目的 pom.xml 中初始依赖如下,后面会增加更多依赖。
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> 1. Spring相关知识记录一些基本概念,Spring的知识可能说的比较少,本篇关注于如何对网站进行实现。
Spring Bean是被实例的,组装的及被Spring 容器管理的Java对象。
Spring 容器会自动完成@bean对象的实例化。
创建应用对象之间的协作关系的行为称为:装配(wiring),这就是依赖注入的本质。
在使用 Spring Initializr 之后,第一个接触的注解为:
@SpringBootApplication我们可以把 @SpringBootApplication 看作是 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合。
根据 SpringBoot 官网,这三个注解的作用分别是:
@EnableAutoConfiguration :启用 SpringBoot 的自动配置机制
@ComponentScan : 扫描被@Component (@Service,@Controller)注解的 bean,注解默认会扫描该类所在的包下所有的类。
@Configuration :允许在 Spring 上下文中注册额外的 bean 或导入其他配置类(表示该类是配置类)
Spring通过识别一些注解可以让容器自动装填bean:
@Component :通用的注解,可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注。
@Repository : 对应持久层即 Dao 层,主要用于数据库相关操作。
@Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao (Data Access Object)层。
@Controller : 对应 Spring MVC 控制层,主要用户接受用户请求并调用 Service 层返回数据给前端页面。
关于@Scope,负责声明Bean的作用域:
@Scope("singleton") //唯一 bean 实例,Spring 中的 bean 默认都是单例的。 @Scope("prototype") //每次请求都会创建一个新的 bean 实例。 @Scope("request") //每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP request 内有效。 @Scope("session") //每一次 HTTP 请求都会产生一个新的 bean,该 bean 仅在当前 HTTP session 内有效。关于@Autowired:
自动导入对象到类中,被注入进的类同样要被 Spring 容器管理。从构造器,到方法,到参数、属性、注解,都可以加上@Autowired注解。
2. SpringMVC相关可以先了解一些HTTP流的相关知识:(参考自MDN Web Docs)
当客户端想要和服务端进行信息交互时(服务端是指最终服务器,或者是一个中间代理),过程表现为下面几步:
打开一个TCP连接:TCP连接被用来发送一条或多条请求,以及接受响应消息。客户端可能打开一条新的连接,或重用一个已经存在的连接,或者也可能开几个新的TCP连接连向服务端。