项目介绍及框架搭建
简介
利用SpringBoot开发一个功能完善且颜值优雅的个人博客项目,整体难度适中,不管是用来巩固SpringBoot还是在校生找工作而没有像样的项目或者就单纯的想自己开发一个个人博客而不知道如何下手都是一个不错的选择
技术栈:
- 整体框架:SpringBoot
- 数据库访问框架:SpringBoot-JPA
- 模板引擎:Thymeleaf
- 数据库:MySQL
- 前端UI框架:BootStrap3
其它:
- 字体图标:FontAwesome4
- CommonMark:解析Markdown
- 邮件:SpringBootMail
- BootStrapTable:展示管理页面的数据
能学到什么
- 如何得用SpringBoot快速搭建一个完整的项目
- 个人博客相关逻辑的处理
- 页面的局部刷新(效果类似php中的pjax,但原理和方法不同)
- Java邮件相关
- 如何在生产环境部署SpringBoot项目
项目展示
准备工作
本机需要安装如下工具(当然,几乎每个Java开发者应该都装了的):
- MySQL(这里也可以用远程的)
- JDK
- Idea
如果需要部署上线的话请准备一台服务器以及域名(这个到最后几节课后面会说)
课件:所有课件都以及文章的形式放在我的博客上了冷文博客,如果本节课有其它资料(如页面、素材等)请直接在文章最下面的附件中找,如果下载链接失效了请联系我
素材介绍
- blog-page:博客的前端页面,因为写了大量的样式,如果带着大家在教程中写会很浪费时间,我就提前给大家写好了一套博客的前端页面,就放到我的网站上,大家直接去下载就行。我们的目的就是将其集成到项目中去,会集成这套页面了想换个样式无非就从网上找些其它页面改一改就能集成到你自己的项目中了
- blog-admin:博客的管理页面,这个页面我就写了个主体的架子,因为不涉及太多样式,就纯粹用bootstrap拼接起来的
项目搭建
- 创建一个空的数据库
- 用idea创建一个maven项目
- 复制下面的依赖到pom文件
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.kevinlu98</groupId>
<artifactId>blog-project</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.7.RELEASE</version>
</parent>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<maven.compiler.plugin.version>3.8.1</maven.compiler.plugin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mysql-connector-java.version>8.0.30</mysql-connector-java.version>
<lombok.version>1.18.24</lombok.version>
</properties>
<dependencies>
<!-- 上边引入 parent,因此 下边无需指定版本 -->
<!-- 包含 mvc,aop 等jar资源 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--thymeleaf模版引擎-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- springboot测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--springbootjpa的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin.version}</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- 创建
application.yml
配置文件并配置数据库连接信息及jackson
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/my_blog?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update # 更新或者创建数据表结构 如果数据库中没做表,Jpa会我们创建 这个配置就是在没有表的时候创建,实体类发生改变的话 会更新表结构
show-sql: true
- 创建main方法并启动项目进行测试
package cn.kevinlu98;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* Author: Mr丶冷文
* Date: 2022/9/29 16:43
* Email: kevinlu98@qq.com
* Description:
*/
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
- 创建
logback
的配置文件logback-spring.xml
,内容如下
<configuration>
<property scope="context" name="LOG_PATTERN" value="[%-5p %d] [%t %c{10}] - %marker%m %n%xEx" />
<springProperty scope="context" name="LOG_DIR" source="logging.file.path"/>
<springProperty scope="context" name="LOG_LEVEL" source="logging.level.root"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%highlight(%-5level) -%logger - %marker%msg %n%xEx</pattern>
</encoder>
</appender>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/application.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/application-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>10</maxHistory>
<totalSizeCap>50MB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="async-file" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="file"/>
</appender>
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/application.err.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/application-%d{yyyy-MM-dd}.%i.err.log</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>10</maxHistory>
<totalSizeCap>50MB</totalSizeCap>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<appender name="async-error" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="error"/>
</appender>
<root level="${LOG_LEVEL}">
<appender-ref ref="STDOUT"/>
<appender-ref ref="async-file"/>
<appender-ref ref="async-error"/>
</root>
</configuration>
- 在
application.yml
中补充logback
的相关配置
logging:
file:
path: ./logs
level:
root: info
- 启动项目并测试
gtbrfs 游客 2024-04-25 00:55 回复
学习
代码初级 游客 2023-02-18 16:22 回复
学习
向星辰 游客 2022-10-24 08:24 回复
很好