SpringBoot项目,从创建到简单实战

SpringBoot,从项目创建到简单实战


博客介绍: 简单SpringBoot,从创建项目,配置application.yml,到数据查询,templates数据视图传输


一、idea创建SpringBoot项目


项目结构预览

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意事项,避免报错:执行完之后找到启动类,如作者定义的Uyi31Application.java类,可以点击右侧绿标运行测试,没报错,代表创建成功
另外说明:springboot不用配置Tomcat

在这里插入图片描述


二、项目代码


项目结构:且注意添加@MapperScan("*")

在这里插入图片描述

application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone = GMT
    username: root
    password: "0504"
    driverClassName: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource #Druid连接池
  profiles:
    active: dev #引用application-dev.properties文件

server:
  port: 8031 #端口
  session-timeout: 30
  tomcat.max-threads: 100
  tomcat.uri-encoding: UTF-8

mybatis:
  # 指定别名设置的包为所有pojo
  type-aliases-package: com.uyi31.pojo
  configuration:
    map-underscore-to-camel-case: true # 驼峰命名规范
#  mapper-locations: classpath:com/uyi31/mapper/*.xml

application-dev.properties

spring.thymeleaf.prefix= classpath:/templates/
spring.thymeleaf.suffix: .html
spring.thymeleaf.check-template-location= true 
#check-tempate-location: 检查模板路径是否存在
spring.thymeleaf.cache=false
#cache: 是否缓存,开发模式下设置为false,避免改了模板还要重启服务器,线上设置为true,可以提高性能。
spring.thymeleaf.encoding= UTF-8
spring.thymeleaf.content-type= text/html
spring.thymeleaf.mode=HTML5
#扫描pojo下的类,并且aliases
mybatis.type-aliases-package=com.uyi31.pojo

uyi31.name=userTom
uyi31.age=22
passwword=liunianyanhuo

pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.4</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.uyi31</groupId>
	<artifactId>demo-blog</artifactId>
	<version>demoVersion</version>
	<name>uyi31</name>
	<description>Demo project for Spring Boot</description>
	
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
		<mybatis-spring-boot>1.2.0</mybatis-spring-boot>
	</properties>

	<dependencies>
		<!-- Spring Boot Web 依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- Spring Boot Test 依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- Spring Boot Mybatis 依赖 -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>${mybatis-spring-boot}</version>
		</dependency>
		<!-- Spring Boot LOG 依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-logging</artifactId>
		</dependency>
		<!-- Spring Boot AOP 依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-aop</artifactId>
		</dependency>
		<!-- Mysql驱动包 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>8.0.30</version>
		</dependency>
		<!-- 数据库连接池 -->
<!--		<dependency>-->
<!--			<groupId>c3p0</groupId>-->
<!--			<artifactId>c3p0</artifactId>-->
<!--			<version>0.9.1.2</version>-->
<!--		</dependency>-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<!--druid连接池-->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.9</version>
		</dependency>
		<!--spring事务-->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
		</dependency>
		<!-- Junit -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional>
			<!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 -->
		</dependency>
		<!--apache公共辅助包括文件上传下载相关等五个) -->
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.6</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.31</version>
		</dependency>
		<dependency>
			<groupId>commons-net</groupId>
			<artifactId>commons-net</artifactId>
			<version>3.1</version>
		</dependency>
		<dependency>
			<groupId>org.scala-lang</groupId>
			<artifactId>scala-library</artifactId>
			<version>2.11.0</version>
		</dependency>
		<!-- excel导入 -->
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml</artifactId>
			<version>RELEASE</version>
		</dependency>
		<!--thymeleaf配置-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<!--@Date.lombok-->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>

	</dependencies>

	<build>
		<resources>
			<!-- 解决mapper绑定异常 -->
			<resource>
				<directory>src/main/java</directory>
				<includes>
					<!--可能会有人习惯将*.xml文件放在java目录下-->
					<include>**/*.xml</include>
				</includes>
				<filtering>false</filtering>
			</resource>
			<!-- 解决未找到数据源等配置文件异常 -->
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/*.yml</include>
					<include>**/*.xml</include>
					<include>**/*.html</include>
				</includes>
			</resource>
		</resources>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<fork>true</fork>
				</configuration>
			</plugin>

		</plugins>
	</build>
</project>

UserController.java

package com.uyi31.controller;

import com.uyi31.pojo.User;
import com.uyi31.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;
import java.util.Map;

/**
* @Description: UserController类中实现数据的增删查改
* @author: uyi31
* @date: 2022/10/14
*/

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    UserService userService;

    /*  查询单条数据:
        没有配置视图路径,会直接在web页面中显示内容*/
    @RequestMapping("/select")
    public String selectAll1() {
        Map<String,Object> map= userService.selectUser();
        return map.toString();
    }
    /*获取数据库数据显示在web网页上*/
    @RequestMapping("/selectAll")
    public ModelAndView selectAll2(ModelAndView mav) {
        mav.setViewName("listUser");
        List<User> uList= userService.selectUserAll();
        mav.addObject("uList",uList);
        return mav;
    }
    /*添加数据*/
    @RequestMapping("/insert")
    public String insertValue(){
        User user = new User(3,"userTom","pwd1234","51dsada2");
        int count=userService.insertValue(user);
        if(count>0){
            return "执行成功";
        }else {
            return "执行失败";
        }
    }

    /*删除数据*/
    @RequestMapping("/delete")
    public String deleteValue(){
        User user = new User(3);
        int count=userService.deleteValue(user);
        if(count>0){
            return "执行成功";
        }else {
            return "执行失败";
        }
    }

    /*删除数据*/
    @RequestMapping("/update")
    public String updateValue(){
        User user = new User(4,"123","456","789");
        int count=userService.updateValue(user);
        if(count>0){
            return "执行成功";
        }else {
            return "执行失败";
        }
    }
}

ThymeleafController.java

package com.uyi31.controller;

import com.uyi31.pojo.User;
import com.uyi31.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import java.util.ArrayList;
import java.util.HashMap;

/**
 * @Description: Thymeleaf实现视图跳转
 * @Param: [mv]
 * @return: org.springframework.web.servlet.ModelAndView
 * @author: uyi31
 * @date: 2022/10/14
 */
@Controller
@RequestMapping("/thyme")
public class ThymeleafController {

    @Autowired
    private UserService userService;

    @RequestMapping(value = "/thymetest")
    public ModelAndView ThymeleafTest(ModelAndView mv) {
        /*视图会在application-dev.properties中配置,路径自动拼接查找:/templates/ThymeleafTest.html */
        mv.setViewName("ThymeleafTest");
        mv.addObject("msg","欢迎使用Thymeleaf!");
        return mv;
    }

    @RequestMapping("/setValue")
    public ModelAndView selectAll1(ModelAndView model) {
        model.setViewName("index");
        /*设置User数据*/
        User user = new User(2,"dadsad","dasdag","rq3413");
        model.addObject("user",user);
        /*设置List数据*/
        ArrayList<String> strList = new ArrayList<>();
        strList.add("asdasdfa");
        strList.add("78asd88d");
        strList.add("dsad78sa");
        model.addObject("strList",strList);
        /*设置map数据*/
        HashMap hMap = new HashMap();
        hMap.put("key1","value1");
        hMap.put("key3","value3");
        hMap.put("key2","value2");
        model.addObject("hMap",hMap);
        return model;
    }

    @RequestMapping("/home")
    public ModelAndView homeTest(ModelAndView modelAndView){
        modelAndView.setViewName("home");
        return modelAndView;
    }

}

User.java

package com.uyi31.pojo;

import org.apache.ibatis.type.Alias;

/*
get,set方法。
@Data
有参构造方法
@AllArgsConstructor
无参构造方法
@NoArgsConstructor
*/
@Alias("user")
public class User {

    private Integer uid;
    private String uname;
    private String upassword;
    private String uemail;

    public User() {
    }

    public User(Integer uid) {
        this.uid = uid;
    }

    public User(Integer uid, String uname, String upassword, String uemail) {
        this.uid = uid;
        this.uname = uname;
        this.upassword = upassword;
        this.uemail = uemail;
    }


    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUpassword() {
        return upassword;
    }

    public void setUpassword(String upassword) {
        this.upassword = upassword;
    }

    public String getUemail() {
        return uemail;
    }

    public void setUemail(String uemail) {
        this.uemail = uemail;
    }

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", uname='" + uname + '\'' +
                ", upassword='" + upassword + '\'' +
                ", uemail=" + uemail +
                '}';
    }
}

UserService.java

package com.uyi31.service;

import com.uyi31.pojo.User;
import java.util.List;
import java.util.Map;

public interface UserService {

    Map<String , Object> selectUser();

    int insertValue(User user);

    int deleteValue(User user);

    List<User> selectUserAll();

    int updateValue(User user);
}

UserServiceImpl.java

package com.uyi31.service.impl;

import com.uyi31.mapper.UserMapper;
import com.uyi31.pojo.User;
import com.uyi31.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;

@Service
@Transactional
public class UserServiceImpl implements UserService {
    private Logger log = LoggerFactory.getLogger(this.getClass());
    @Autowired
    private UserMapper userMapper;

    public UserServiceImpl(){
    }

    /*查询用户*/
    @Override
    public Map<String , Object> selectUser(){
        Map<String , Object> map= userMapper.selectUser();
        return map;
    }
    @Override
    public List<User> selectUserAll() {
        List<User> uList=userMapper.selectUserAll();
        return uList;
    }



    /*添加数据*/
    @Override
    public int insertValue(User user) {
        int count=userMapper.insertUser(user);
        return count;
    }

    /*删除数据*/
    @Override
    public int deleteValue(User user) {
        int count=userMapper.deleteUser(user);
        return count;
    }

    /*改*/
    @Override
    public int updateValue(User user) {
        return userMapper.updateUser(user);
    }


}

UserMapper.java

package com.uyi31.mapper;

import com.uyi31.pojo.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface UserMapper {

    /*查询用户*/
    Map<String , Object> selectUser();
    @Select("select * from untitled")
    List<User> selectUserAll();

    /*插入数据*/
    int insertUser(@Param("user") User user);

    /*删除*/
    int deleteUser(@Param("user") User user);

    /*改*/
    int updateUser(@Param("user") User user);
}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.uyi31.mapper.UserMapper">

    <!-- 用户查询,单条数据 -->
    <select id="selectUser" resultType="HashMap">
		select * from untitled where uid=1
	</select>
	<!--这里使用的user,是自定义pojo中已经建好的User.java类,对象为user-->
	<insert id="insertUser" parameterType="user">
      insert into untitled(uname,upassword,uemail) values(#{user.uname},#{user.upassword},#{user.uemail})
    </insert>

	<delete id="deleteUser" parameterType="user">
        delete from untitled where uid = #{user.uid}
    </delete>

	<update id="updateUser" parameterType="user">
        update untitled set uname=#{user.uname},upassword=#{user.upassword},uemail=#{user.uemail} where uid=#{user.uid}
    </update>


</mapper>

home.html

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org" >
<head>
    <meta charset="UTF-8">
    <title>Home</title>
</head>
<body>

<h2>消息表达</h2>
<table bgcolor="#ffe4c4" border="1">
    <tr>
        <td>name:</td>
        <td th:text="#{uyi31.name}"></td>
    </tr>
    <tr>
        <td>age:</td>
        <td th:text="#{uyi31.age}"></td>
    </tr>
    <tr>
        <td>upwd:</td>
        <td th:text="#{passwword}"></td>
    </tr>
</table>

</body>
</html>

index.html

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org" >
<head>
    <title>index.html</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel="stylesheet" th:href="@{index.css}">
    <script type="text/javascript" th:src="@{index.js}"></script>
</head>
<body>

<h2>index.html-JavaBean-map</h2>
<table bgcolor="#ffff" border="0">
    <tr>
        <td>name:</td>
        <td th:text="${user.uname}"></td>
    </tr>
    <tr>
        <td>emial:</td>
        <td th:text="${user['uemail']}"></td>
    </tr>
    <tr>
        <td>upwd:</td>
        <td th:text="${user.getUpassword()}"></td>
    </tr>
</table>

<h2>List</h2>
<table bgcolor="#ffe4c4" border="1">
    <tr th:each="item:${strList}">
        <td th:text="${item}"></td>
    </tr>
</table>

<h2>Map-指定取值</h2>
<table bgcolor="#8fbc8f" border="1">
    <tr>
        <td>valueRes1:</td>
        <td th:text="${hMap.get('key1')}"></td>
    </tr>
    <tr>
        <td>valueRes2:</td>
        <td th:text="${hMap['key2']}"></td>
    </tr>
</table>

<div th:object="${hMap}">
    <p>Name: <span th:text="*{key1}"></span>.</p>
    <p>Age: <span th:text="*{key2}">18</span>.</p>
    <p>Detail: <span th:text="*{key3}">好好学习</span>.</p>
</div>

</body>
</html>

listUser.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" >
<head>
    <meta charset="UTF-8">
    <title>listUser</title>
</head>
<body>
<h1>遍历uList数据</h1>
<table>
    <tr th:each="item:${uList}">
        <td th:text="${item}"></td>
    </tr>
</table>
</body>
</html>

ThymeleafTest.html

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org" >
<head>
    <title>ThymeleafTest.html</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    <link rel="stylesheet" th:href="@{index.css}">
    <script type="text/javascript" th:src="@{index.js}"></script>

</head>
<body>

<h5 th:text="'Hello,' + ${msg}"></h5>
<div th:text="${msg}">这是数据渲染实例</div>
<a th:href="@{select}">index.html超链接</a>

</body>
</html>

创建sql -- mysql5.7

在这里插入图片描述

show

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

声明:资源免费下载
作者网上自学、尝试与总结…

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SpringBoot实战(第4版)清晰文字版,第 1 章 入门 ................................................ 1 1.1 Spring 风云再起 ........................................ 1 1.1.1 重新认识 Spring ............................ 2 1.1.2 Spring Boot 精要 ........................... 3 1.1.3 Spring Boot 不是什么 ................... 6 1.2 Spring Boot 入门 ....................................... 6 1.2.1 安装 Spring Boot CLI .................... 7 1.2.2 使用 Spring Initializr 初始化 Spring Boot 项目 .......................... 10 1.3 小结 ......................................................... 18 第 2 章 开发第一个应用程序 .................... 19 2.1 运用 Spring Boot ..................................... 19 2.1.1 查看初始化的 Spring Boot项目 .......................................... 21 2.1.2 Spring Boot 项目构建过程 解析 .............................................. 24 2.2 使用起步依赖 .......................................... 27 2.2.1 指定基于功能的依赖 ................... 28 2.2.2 覆盖起步依赖引入的传递依赖 .... 29 2.3 使用自动配置 .......................................... 30 2.3.1 专注于应用程序功能 ................... 31 2.3.2 运行应用程序 .............................. 36 2.3.3 刚刚发生了什么 ........................... 38 2.4 小结 ......................................................... 41 第 3 章 自定义配置 .................................... 42 3.1 覆盖 Spring Boot 自动配置 ..................... 42 3.1.1 保护应用程序 .............................. 43 3.1.2 创建自定义的安全配置 ............... 44 3.1.3 掀开自动配置的神秘面纱 ........... 48 3.2 通过属性文件外置配置 ........................... 49 3.2.1 自动配置微调 .............................. 50 3.2.2 应用程序 Bean 的配置外置 ......... 55 3.2.3 使用 Profile 进行配置 .................. 59 3.3 定制应用程序错误页面 ........................... 62 3.4 小结 ......................................................... 64 第 4 章 测试 ............................................... 66 4.1 集成测试自动配置 .................................. 66 4.2 测试 Web 应用程序 ................................. 68 4.2.1 模拟 Spring MVC ........................ 69 4.2.2 测试 Web 安全 ............................. 72 4.3 测试运行中的应用程序 ........................... 74 4.3.1 用随机端口启动服务器 ............... 75 4.3.2 使用 Selenium 测试 HTML 页面 ............................................. 76 4.4 小结 ......................................................... 78 第 5 章 Groovy 与 Spring Boot CLI ......... 80 5.1 开发 Spring Boot CLI 应用程序 .............. 80 5.1.1 设置 CLI 项目 .............................. 81 5.1.2 通过 Groovy 消除代码噪声 ......... 81 5.1.3 发生了什么 .................................. 85 5.2 获取依赖 .................................................. 86 5.2.1 覆盖默认依赖版本 ....................... 87 5.2.2 添加依赖仓库 .............................. 88 5.3 用 CLI 运行测试 ...................................... 89 5.4 创建可部署的产物 .................................. 91 5.5 小结 ......................................................... 91 第 6 章 在 Spring Boot 中使用 Grails ...... 93 6.1 使用 GORM 进行数据持久化 ................. 93 2 目 录 6.2 使用 Groovy Server Pages 定义视图 ....... 98 6.3 结合 Spring Boot 与 Grails 3 ................. 100 6.3.1 创建新的 Grails 项目 ................. 100 6.3.2 定义领域模型 ............................ 103 6.3.3 开发 Grails 控制器 ..................... 104 6.3.4 创建视图 .................................... 105 6.4 小结 ....................................................... 107 第 7 章 深入 Actuator .............................. 108 7.1 揭秘 Actuator 的端点 ............................ 108 7.1.1 查看配置明细 ............................ 109 7.1.2 运行时度量 ................................ 115 7.1.3 关闭应用程序 ............................ 121 7.1.4 获取应用信息 ............................ 121 7.2 连接 Actuator 的远程 shell .................... 122 7.2.1 查看 autoconfig 报告 ........... 123 7.2.2 列出应用程序的 Bean ............... 124 7.2.3 查看应用程序的度量信息 ......... 124 7.2.4 调用 Actuator 端点 .................... 125 7.3 通过 JMX 监控应用程序 ....................... 126 7.4 定制 Actuator......................................... 128 7.4.1 修改端点 ID ............................... 128 7.4.2 启用和禁用端点 ........................ 129 7.4.3 添加自定义度量信息 ................. 129 7.4.4 创建自定义跟踪仓库 ................. 132 7.4.5 插入自定义健康指示器 ............. 134 7.5 保护 Actuator 端点 ................................ 136 7.6 小结 ....................................................... 138 第 8 章 部署 Spring Boot 应用程序 ........ 139 8.1 衡量多种部署方式 ................................ 139 8.2 部署到应用服务器 ................................ 140 8.2.1 构建 WAR 文件 ......................... 141 8.2.2 创建生产 Profile ........................ 142 8.2.3 开启数据库迁移 ........................ 145 8.3 推上云端 ............................................... 150 8.3.1 部署到 Cloud Foundry ............... 150 8.3.2 部署到 Heroku ........................... 153 8.4 小结 ....................................................... 155 附录 A Spring Boot 开发者工具.............. 157 附录 B Spring Boot 起步依赖 ................. 163 附录 C 配置属性 ...................................... 169 附录 D Spring Boot 依赖 ......................... 202
当前课程中博客项目实战源码是我在 GitHub上开源项目 My-Blog,目前已有 3000 多个 star:本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 个人博客项目功能的讲解,通过本课程的学习,不仅仅让你掌握基本的 Spring Boot 开发能力以及 Spring Boot 项目的大部分开发使用场景,同时帮你提前甄别和处理掉将要遇到的技术难点,认真学完这个课程后,你将会对 Spring Boot 有更加深入而全面的了解,同时你也会得到一个大家都在使用的博客系统源码,你可以根据自己的需求和想法进行改造,也可以直接使用它来作为自己的个人网站,这个课程一定会给你带来巨大的收获。作者寄语本课程录制于 2020 年,代码基于 Spring Boot 2.x 版本。到目前为止,Spring Boot 技术栈也有一些版本升级,比如 Spring Boot 2.7 发版、Spring Boot 3.x 版本发布正式版本。对于这些情况,笔者会在本课程实战项目的开源仓库中创建不同的代码分支,保持实战项目的源码更新,保证读者朋友们不会学习过气的知识点。课程特色 课程内容紧贴 Spring Boot 技术栈,涵盖大部分 Spring Boot 使用场景。开发教程详细完整、文档资源齐全、实验过程循序渐进简单明了。实践项目页面美观且实用,交互效果完美。包含从零搭建项目、以及完整的后台管理系统和博客展示系统两个系统的功能开发流程。技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,对于提升你的市场竞争力有一定的帮助。实战项目预览    
当前课程中商城项目实战源码是我发布在 GitHub 上的开源项目 newbee-mall (新蜂商城),目前已有 9900 多个 Star,本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 大部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 商城项目功能的讲解,让大家实际操作并实践上手一个大型的线上商城项目,并学习到一定的开发经验以及其中的开发技巧。商城项目所涉及的功能结构图整理如下: 作者寄语本课程录制于2019年,距今已有一段时间。期间,Spring Boot技术栈也有一些版本升级,比如Spring Boot 2.7.x发版、Spring Boot 3.x版本正式版本。对于这些情况,笔者会在本课程实战项目的开源仓库中创建不同的代码分支,保持实战项目的源码更新,保证读者朋友们不会学习过气的知识点。新蜂商城的优化和迭代工作不会停止,不仅仅是功能的优化,在技术栈上也会不断的增加,截止2023年,新蜂商城已经发布了 7 个重要的版本,版本记录及开发计划如下图所示。 课程特色 对新手开发者十分友好,无需复杂的操作步骤,仅需 2 秒就可以启动这个完整的商城项目最终的实战项目是一个企业级别的 Spring Boot 大型项目,对于各个阶段的 Java 开发者都是极佳的选择实践项目页面美观且实用,交互效果完美教程详细开发教程详细完整、文档资源齐全代码+讲解+演示网站全方位保证,向 Hello World 教程说拜拜技术栈新颖且知识点丰富,学习后可以提升大家对于知识的理解和掌握,可以进一步提升你的市场竞争力 课程预览 以下为商城项目的页面和功能展示,分别为:商城首页 1商城首页 2购物车订单结算订单列表支付页面后台管理系统登录页商品管理商品编辑

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值