初识SpringBoot
基础介绍
SpingBoot里的Spring是指Spring框架,Spring框架是由于软件开发的复杂性而创建的,而Boot是启动的意思,所以SpringBoot其实是一个启动Spring项目的一个工具,从根本上讲,SpringBoot就是一些库的集合,它能够被任意项目的构建系统所使用。
出现背景
长期以来 Java 的开发一直让人所诟病,面临着两个重要的难题:
- Java项目开发复杂度极其高
- Java 项目的维护非常困难
在这样的时代背景下,诞生了Sping框架,但是好景不长,人们发现,如果要想在 Spring 之中整合 RabbitMQ、Kafka、ActiveMQ、MySQL、Druid、Redis、Shiro等,需要编写一堆堆的xml 配置文件;所以在这样的一个大的历史背景下,很多人开始寻求更加简便的开发,而遗憾的是这种简便的开发没有被 JDK 所支持、没有被 JavaEE 所支持,因为这些只是平台,平台能够提供的只是最原始的技术支持。这一时刻终于由于 Spring 框架的升级而得到了新生,SpringBoot 的出现,改变了所有 Java 开发的困境,SpringBoot的最终奉行的宗旨:废除掉所有复杂的开发,废除掉所有的配置文件,让开发变得更简单纯粹,核心:零配置。
优点
- 使编码变得简单,SpringBoot采用 JavaConfig的方式,对Spring进行配置,并且提供了大量的注解,极大的提高了工作效率。
- 使配置变得简单,SpringBoot提供许多默认配置,当然也提供自定义配置,但是所有的SpringBoot的项目都只有一个配置文件:application.properties/application.yml。
- 使部署变得简单,SpringBoot内置了三种Servlet容器,Tomcat,Jetty,undertow.我们只需要一个Java的运行环境就可以跑SpringBoot的项目了,SpringBoot的项目可以打成一个jar包,然后通过Java -jar xxx.jar来运行
- 使监控变得简单,SpringBoot提供了actuator包,可以使用它来对应用进行监控。
新闻后台管理系统1.0
功能模块
实体及关系图
Type、Tag类比较简单就不做图介绍了。
本次项目内容
- 创建项目,导入相关依赖,配置项目文件,引入页面文件
- 实现登录功能和分类列表展示功能
项目开发过程
-
创建项目
然后一路next下去,创建整个项目。 -
编辑pom.xml,导入相关依赖
- 我们只需要在pom.xml中编写需要引入的依赖,Maven会自动帮我们下载这些依赖包。我在这里直接放pom.xml的链接,读者需要下载并复制里面的内容,但是里面的groupId和artifactId需要替换为自己的。
链接:pom.xml - 在完成pom.xml的编辑之后,我们需要点击Maven的刷新开始下载依赖包。
- 配置系统属性
- 将resources文件夹下的application.properties文件修改为application.yml文件,这次我们使用yml文件来配置各种系统属性。
- 填写各种系统属性
spring:
#datasoure里请填写自己的数据库信息
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3307/springboot?urlSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 1214
jpa:
hibernate:
ddl-auto: update
use-new-id-generator-mappings: false
show-sql: true
thymeleaf:
mode: HTML
profiles:
active: dev
#port里请填写自己使用的Tomcat服务器端口号,默认为8080
server:
port: 8081
- 引入网页文件
- 网页文件已经有人帮助我们写好了,现在直接导入就行,毕竟本次项目主要是练习后端的实现,前端的知识并未涉及太多。
- 在resources文件夹下导入templates文件夹,这个文件夹内放的主要是构建网页的html文件。
链接:templates文件夹 - 在resources文件夹下导入static文件夹,这个文件夹内放的主要是一些封装的页面组件和图片。
链接:templates文件夹
- 创建实体类
- 创建po包,PO的意思是指持久化对象,也就是数据持久层,在这个包内我们可以创建各种实体类,并且通过注释自动在数据库中创建相关表。
- 在po包下创建User类、Type类、News类,这里就不放类的内容了,实在是太多了,直接上链接。
链接:实体类
- 创建Repository接口
- 创建dao包,DAO的意思是数据访问对象,也就是数据访问层,在这个包里我们可以创建各种实体对应的Repository接口,并且使这个接口继承JpaRepository接口,在JpaRepository接口中定义了各种访问数据库的方法,于是各种实体便能利用他们的Repository接口完成对数据库的各种操作。
- 在dao包下创建UserRepository、TypeRepository接口,在这些接口中,我们并不需要去定义大量的方法,因为父接口JpaRepository中已经定义了大量的方法了。
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsernameAndPassword(String username, String password);
}
public interface TypeRepository extends JpaRepository<Type, Long> {
}
- 创建Service类
- 创建service包,这是服务层,在这个包内我们可以创建各种实体对应的Service接口
- 在Service包下创建UserService、TypeService接口
public interface UserService {
User checkUser(String username, String password);
}
public interface TypeService {
Page<Type> listType(Pageable pageable);
}
- 在service包下创建impl包,在这个包内我们可以创建各种实体对应ServiceImpl类,并实现对应的Service接口。
- 在impl包下创建UserServiceImpl、TypeServiceImpl类
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Override
public User checkUser(String username, String password) {
return userRepository.findByUsernameAndPassword(username, password);
}
}
@Service
public class TypeServiceImpl implements TypeService {
@Autowired
private TypeRepository typeRepository;
@Override
public Page<Type> listType(Pageable pageable) {
return typeRepository.findAll(pageable);
}
}
- 创建Controller类
- 在web包下创建admin包,这个包是专门用来存放管理员使用的Controller类,在这个包内我们可以创建各种Controller类。
- 在admin包下,创建LoginController、TypeController类
@Controller
@RequestMapping("/admin")
public class LoginController {
@Autowired
private UserService userService;
@GetMapping
public String loginPage(){
return "admin/login";
}
@PostMapping("/login")
public String login(@RequestParam String username, @RequestParam String password,
HttpSession session, RedirectAttributes attributes){
User user = userService.checkUser(username, password);
if(user != null){
user.setPassword(null);
session.setAttribute("user", user);
return "admin/index";
}else{
attributes.addFlashAttribute("message", "用户名密码错误");
return "redirect:/admin";
}
}
@GetMapping("/logout")
public String logout(HttpSession session){
session.removeAttribute("user");
return "redirect:/admin";
}
}
@Controller
@RequestMapping("/admin")
public class TypeController {
@Autowired
private TypeService typeService;
@RequestMapping("/types")
public String type(@PageableDefault(size = 5,sort = {"id"}, direction = Sort.Direction.DESC)Pageable pageable, Model model){
model.addAttribute("page", typeService.listType(pageable));
return "admin/types";
}
}
-
运行程序,添加数据库信息。因为User、Type、News类中的注解,程序运行后,数据库中会自动创建user表、type表、news表,为了后续的项目演示,我们需要在user表中至少添加一个用户信息,在type表中也添加一些类型信息。
-
打开浏览器并在网址栏内输入"localhost:8081/admin",请将这里的8081替换你使用的端口号。因为SpringBoot项目使用的是内置的Tomcat服务器,它不会自动给我们打开后台页面,所以需要我们手动输入网址。
项目演示
- 登录界面
- 主页
- 分类管理界面
项目下载
链接:news1