超适合初学者的Spring Boot学习笔记

SpringBoot 快速入门(保姆级详细教程) SpringBoot快速入门,保姆级别超详细,解决IDEA创建SpringBoot项目一直转圈圈。 阅读详情

Spring Boot是Spring家族下的一个全新开发框架,其设计目的主要是用来简化Spring应用的创建及开发过程,它提供了自动配置,starter依赖等特性,从而使开发人员从大量的XML配置中解脱出来,Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者。

动力节点的springboot本课程由浅入深,带你体验Spring Boot的极速开发过程,内容丰富,涵盖了SpringBoot开发的方方面面,并且同步更新到Spring Boot 2.x系列的最新版本,让你一次性拿下Spring Boot开发框架。

视频观看地址

https://www.bilibili.com/video/BV1XQ4y1m7ex

Spring Boot 讲义

第 1 章 Spring Boot 框架入门

1.1 Spring Boot 简介
Spring Boot是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和

开发过程,也可以说Spring Boot能简化我们之前采用SpringMVC + Spring + MyBatis框架进行

开发的过程。

在以往我们采用SpringMVC + Spring + MyBatis框架进行开发的时候,搭建和整合三大框

架,我们需要做很多工作,比如配置web.xml,配置Spring,配置MyBatis,并将它们整合在

一起等,而Spring Boot框架对此开发过程进行了革命性的颠覆,完全抛弃了繁琐的xml配

置过程,采用大量的默认配置简化我们的开发过程。

所以采用Spring Boot可以非常容易和快速地创建基于Spring框架的应用程序,它让编

码变简单了,配置变简单了,部署变简单了,监控变简单了。正因为 Spring Boot 它化繁为

简,让开发变得极其简单和快速,所以在业界备受关注。

Spring Boot在国内的关注趋势图:http://t.cn/ROQLquP
1.2 Spring Boot 的特性
➢ 能够快速创建基于Spring的应用程序
➢ 能够直接使用java main方法启动内嵌的Tomcat服务器运行Spring Boot程序,不需
要部署war包文件
➢ 提供约定的starter POM来简化Maven配置,让Maven的配置变得简单
➢ 自动化配置,根据项目的Maven依赖配置,Spring boot自动配置Spring、Spring mvc
等
➢ 提供了程序的健康检查等功能
➢ 基本可以完全不使用XML配置文件,采用注解配置
北京动力节点 http://www.bjpowernode.com
1.3 Spring Boot 四大核心
1.3.1 自动配置
1.3.2 起步依赖
1.3.3 Actuator
1.3.4 命令行界面
北京动力节点 http://www.bjpowernode.com

第 2 章 Spring Boot 入门案例

2.1 第一个 SpringBoot 项目
2.1.1 开发步骤

项目名称: 001 - springboot-first

( 1 ) 创建一个 Module ,选择类型为 Spring Initializr 快速构建
北京动力节点 http://www.bjpowernode.com
( 2 ) 设置 GAV 坐标及 pom 配置信息
( 3 ) 选择 Spring Boot 版本及依赖

会根据选择的依赖自动添加起步依赖并进行自动配置

北京动力节点 http://www.bjpowernode.com
( 4 ) 设置模块名称、 Content Root 路径及模块文件的目录

点击 Finish ,如果是第一次创建,在右下角会提示正在下载相关的依赖

北京动力节点 http://www.bjpowernode.com
( 5 ) 项目创建完毕,如下
( 6 ) 项目结构
北京动力节点 http://www.bjpowernode.com

static:存放静态资源,如图片、CSS、JavaScript等

templates:存放Web页面的模板文件

application.properties/application.yml 用于存放程序的各种依赖模块的配置信息,比如 服务

端口,数据库连接配置等

2.2 入门案例

项目名称: 002 - springboot-springmvc

2.2.2 创建一个新的 Module ,选择类型为 Spring Initializr
北京动力节点 http://www.bjpowernode.com
2.2.3 指定 GAV 及 pom 配置信息
2.2.4 选择 Spring Boot 版本及依赖
会根据选择的依赖自动添加起步依赖并进行自动配置
北京动力节点 http://www.bjpowernode.com
2.2.5 修改 Content Root 路径及文件所在目录
2.2.6 对 POM.xml 文件进行解释

http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0org.springframework.boot spring-boot-starter-parent 2.2.1.RELEASE com.bjpowernode.springboot 002 - springboot-springmvc 1.0.0 002 - springboot-springmvc Demo project for Spring Boot 1.8org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine北京动力节点 http://www.bjpowernode.com
org.springframework.boot spring-boot-maven-plugin

北京动力节点 http://www.bjpowernode.com
2.2.7 对 SpringBoot 项目结构进行说明
➢ .mvn|mvnw|mvnw.cmd:使用脚本操作执行maven相关命令,国内使用较少,可删
除
➢ .gitignore:使用版本控制工具git的时候,设置一些忽略提交的内容
➢ static|templates:后面模板技术中存放文件的目录
➢ application.properties:SpringBoot的配置文件,很多集成的配置都可以在该文件中
进行配置,例如:Spring、springMVC、Mybatis、Redis等。目前是空的
➢ Application.java:SpringBoot程序执行的入口,执行该程序中的main方法,SpringBoot
就启动了
2.2.8 创建一个 Spring MVC 的 Spring BootController

SpringBootController类所在包:com.bjpowernode.springboot.web

package com.bjpowernode.springboot.web;

import org.springframework.stereotype.Controller;

北京动力节点 http://www.bjpowernode.com

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

_/**

  • ClassName:SpringBootController
  • Package:com.bjpowernode.springboot.web
  • Description:
    */_
    @Controller
    public class SpringBootController {

@RequestMapping(value = “/springBoot/say”)
public @ResponseBody String say() {
return “Hello,springBoot!”;
}
}

注意:新创建的类一定要位于 Application 同级目录或者下级目录,否则 SpringBoot 加

载不到。

2.2.9 在 IDEA 中右键,运行 Application 类中的 main 方法
通过在控制台的输出,可以看到启动SpringBoot框架,会启动一个内嵌的tomcat,端
口号为 8080 ,上下文根为空
2.2.10 在浏览器中输入 http://localhost:8080/springBoot/say 访问
北京动力节点 http://www.bjpowernode.com
2.3 入门案例分析
➢ Spring Boot的父级依赖spring-boot-starter-parent配置之后,当前的项目就是Spring
Boot项目
➢ spring-boot-starter-parent是一个Springboot的父级依赖,开发SpringBoot程序都需
要继承该父级项目,它用来提供相关的Maven默认依赖,使用它之后,常用的jar
包依赖可以省去version配置
➢ Spring Boot提供了哪些默认jar包的依赖,可查看该父级依赖的pom文件
➢ 如果不想使用某个默认的依赖版本,可以通过pom.xml 文件的属性配置覆盖各个
依赖项,比如覆盖Spring版本

<spring-framework.version>5.0.0.RELEASE</ spring-framework.version >

</properties>
➢ @SpringBootApplication 注解是 Spring Boot 项目的核心注解,主要作用是开启
Spring 自动配置,如果在 Application 类上去掉该注解,那么不会启动 SpringBoot
程序
➢ main方法是一个标准的Java程序的main方法,主要作用是作为项目启动运行的入
口
➢ @Controller 及 @ResponseBody 依然是我们之前的Spring MVC,因为Spring Boot
的里面依然是使用我们的Spring MVC + Spring + MyBatis 等框架
2.4 Spring Boot 的核心配置文件
Spring Boot的核心配置文件用于配置Spring Boot程序,名字必须以application开始
2.4.1 核心配置格式
( 7 ) .properties 文件(默认采用该文件)

在 002 - springboot-springmvc项目基础上,进行修改

北京动力节点 http://www.bjpowernode.com

项目名称: 003 - springboot-port-context-path

通过修改application.properties配置文件,在修改默认tomcat端口号及项目上下文件根

键值对的properties属性文件配置方式

#设置内嵌Tomcat端口号
server.port= 9090

#配置项目上下文根
server.servlet.context-path=/003-springboot-port-context-path

配置完毕之后,启动浏览器测试

页面显示结果
北京动力节点 http://www.bjpowernode.com
( 8 ) .yml 文件

项目名称: 004 - springboot-yml,在 003 项目基础之上

yml 是一种 yaml 格式的配置文件,主要采用一定的空格、换行等格式排版进行配置。
yaml 是一种直观的能够被计算机识别的的数据序列化格式,容易被人类阅读,yaml 类

似于 xml,但是语法比xml 简洁很多,值与前面的冒号配置项必须要有一个空格, yml 后

缀也可以使用 yaml 后缀

注意:当两种格式配置文件同时存在,使用的是 .properties 配置文件,为了演示 yml ,可以

先将其改名,重新运行 Application ,查看启动的端口及上下文根

我们以后在授课的过程中,使用 properties ,所以演示完 yml 效果后,将该配置文件改名

北京动力节点 http://www.bjpowernode.com
2.4.2 多环境配置
在实际开发的过程中,我们的项目会经历很多的阶段(开发->测试->上线),每个阶段

的配置也会不同,例如:端口、上下文根、数据库等,那么这个时候为了方便在不同的环境

之间切换,SpringBoot提供了多环境配置,具体步骤如下

( 9 ) 项目名称: 005 - springboot-multi-environment
为每个环境创建一个配置文件,命名必须以 application- 环境标识 .properties|yml
application-dev.properties
#开发环境
北京动力节点 http://www.bjpowernode.com

#设置内嵌Tomcat默认端口号
server.port= 8080

#设置项目的上下文根
server.servlet.context-path=/00 5 - springboot-multi-environment-dev

application-product.properties

#生产环境

#配置内嵌Tomcat默认端口号
server.port= 80

#配置项目上下文根
server.servlet.context-path=/00 5 - springboot-multi-environment-product

application-test.properties

#测试环境

#配置内嵌Tomcat端口号
server.port= 8081

#配置项目的上下文根
server.servlet.context-path=/00 5 - springboot-multi-environment-test

在总配置文件application.properties进行环境的激活

#SpringBoot的总配置文件

#激活开发环境
#spring.profiles.active=dev

#激活测试环境
#spring.profiles.active=test

#激活生产环境
spring.profiles.active=product

等号右边的值和配置文件的环境标识名一致,可以更改总配置文件的配置,重新

北京动力节点 http://www.bjpowernode.com
运行 Application ,查看启动的端口及上下文根
( 10 ) 项目名称: 006 - springboot-multi-environment

为每个环境创建一个配置文件,命名必须以 application- 环境标识 .properties|yml

SpringBoot总配置文件:application.yml

#springboot 总配置文件

# 激活开发环境
_#spring:

profiles:

active: dev_

北京动力节点 http://www.bjpowernode.com

# 激活测试环境
_#spring:

profiles:

active: test_

# 激活生产环境
spring :
profiles :
active : product

开发环境配置文件:application-dev.yml

# 设置开发环境配置

server :
port : 8080 # 设置 Tomcat 内嵌端口号
servlet :
context-path : /dev # 设置上下文根

测试环境配置文件:application-test.yml

# 设置测试环境配置

server :
port : 9090
servlet :
context-path : /test

生产环境配置文件:application-product.yml

# 设置生产环境配置

server :
port : 80
servlet :
context-path : /product

北京动力节点 http://www.bjpowernode.com
2.4.3 Spring Boot 自定义配置
在SpringBoot的核心配置文件中,除了使用内置的配置项之外,我们还可以在自定义配

置,然后采用如下注解去读取配置的属性值

( 11 ) @Value 注解
A 、 项目名称: 007 - springboot-custom-configuration
用于逐个读取application.properties中的配置
案例演示
➢ 在核心配置文件applicatin.properties中,添加两个自定义配置项 school.name和
website。在IDEA中可以看到这两个属性不能被SpringBoot识别,背景是桔色的
application.yml格式配置文件

# 设置端口号及上下文根
server :
port : 9090
servlet :
context-path : /

school :
name : ssm
websit : http://www.baidu.com

➢ 在SpringBootController中定义属性,并使用@Value注解或者自定义配置值,并对
北京动力节点 http://www.bjpowernode.com
其方法进行测试
@Controller
public class SpringBootController {
@Value("${school.name}")
private String schoolName;
@Value("${websit}")
private String websit;
@RequestMapping(value = "/springBoot/say")
public @ResponseBody String say() {
return schoolName + "------" + websit;
}
}
➢ 重新运行Application,在浏览器中进行测试
( 12 ) @ConfigurationProperties

项目名称: 008 - springboot-custom-configuration

将整个文件映射成一个对象,用于自定义配置项比较多的情况
案例演示
➢ 在com.abc.springboot.config包下创建ConfigInfo类,并为该类加上Component和
ConfigurationProperties注解,并在ConfigurationProperties注解中添加属性prefix,
作用可以区分同名配置
@Component
北京动力节点 http://www.bjpowernode.com
@ConfigurationProperties(prefix = "school")
public class ConfigInfo {
private String name;
private String websit;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getWebsit() {
return websit;
}
public void setWebsit(String websit) {
this.websit = websit;
}
}
application.properties配置文件

#设置内嵌Tomcat端口号
server.port= 9090

#设置上下文根
server.servlet.context-path=/config

school.name=ssm
school.websit=http://www.baidu.com

application.yml配置文件

server :
port : 9090
servlet :
context-path : /config

北京动力节点 http://www.bjpowernode.com

school :
name : ABC
websit : http://www.baidu.com

➢ 在SpringBootController中注入ConfigInfo配置类
@Autowired
private ConfigInfo configInfo;
➢ 修改SpringBootController类中的测试方法
@RequestMapping(value = "/springBoot/config")
public @ResponseBody String say() {
return configInfo.getName() + "=======" + configInfo.getWebsit();
}
➢ 重新运行Application,在浏览器中进行测试
( 13 ) 警告解决
➢ 在ConfigInfo类中使用了ConfigurationProperties注解后,IDEA会出现一个警告,
不影响程序的执行
➢ 点击open documentnation跳转到网页,在网页中提示需要加一个依赖,我们将这
个依赖拷贝,粘贴到pom.xml文件中
北京动力节点 http://www.bjpowernode.com
<!--解决使用@ConfigurationProperties注解出现警告问题-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
( 14 ) 中文乱码
如果在SpringBoot核心配置文件中有中文信息,会出现乱码:
◼ 一般在配置文件中,不建议出现中文(注释除外)
◼ 如果有,可以先转化为ASCII码
( 15 ) 友情提示
大家如果是从其它地方拷贝的配置文件,一定要将里面的空格删干净
2.5 Spring Boot 前端使用 JSP

项目名称: 009 - springboot-jsp

北京动力节点 http://www.bjpowernode.com
2.5.4 在 pom.xml 文件中配置以下依赖项

org.apache.tomcat.embed tomcat-embed-jasper

javax.servlet javax.servlet-api

javax.servlet.jsp javax.servlet.jsp-api 2.3.1

javax.servlet jstl

2.5.5 在 pom.xml 的 build 标签中要配置以下信息
SpringBoot要求jsp文件必须编译到指定的META-INF/resources目录下才能访问,否则

访问不到。其实官方已经更建议使用模板技术(后面会讲模板技术)

北京动力节点 http://www.bjpowernode.comsrc/main/webapp META-INF/resources **/.

2.5.6 在 application.properties 文件配置 Spring MVC 的视图展示为
jsp ,这里相当于 Spring MVC 的配置

#SpringBoot核心配置文件
#指定内嵌Tomcat端口号
server.port= 8090

#配置SpringMVC视图解析器
#其中:/ 表示目录为src/main/webapp
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

集成完毕之后,剩下的步骤和我们使用 Spring MVC 一样

application.yml格式的配置文件

#SpringBoot 核心配置文件
# 指定内嵌 Tomcat 端口号
server :
port : 8090
servlet :
context-path : /

# 配置 SpringMVC 视图解析器
# 其中: / 表示目录为 src/main/webapp
spring :
mvc :
view :
prefix : /
suffix : .jsp

北京动力节点 http://www.bjpowernode.com
2.5.7 在 com.abc.springboot.controller 包下创建 JspController 类,并
编写代码

@Controller
public class SpringBootController {

@RequestMapping(value = “/springBoot/jsp”)
public String jsp(Model model) {

model.addAttribute(“data”,“SpringBoot 前端使用JSP页面!”);

return “index”;
}
}

2.5.8 在 src/main 下创建一个 webapp 目录,然后在该目录下新建
index.jsp 页面
如果在webapp目录下右键,没有创建jsp的选项,可以在Project Structure中指定webapp

为Web Resource Directory

北京动力节点 http://www.bjpowernode.com
2.5.9 在 jsp 中获取 Controller 传递过来的数据
2.5.10 重新运行 Application ,通过浏览器访问测试

第 3 章 Spring Boot 框架 Web 开发

3.1 Spring Boot 集成 MyBatis

项目名称: 010 - springboot-web-mybatis

3.1.1 案例思路
通过SpringBoot +MyBatis实现对数据库学生表的查询操作
数据库参考:springboot.sql脚本文件
北京动力节点 http://www.bjpowernode.com
3.1.2 实现步骤
( 1 ) 准备数据库
➢ 启动Linux系统上的mySQL服务器,通过Navicat连接
➢ 创建新的数据库springboot,指定数据库字符编码为utf- 8
➢ 向表中插入数据
( 2 ) 创建 010 - springboot-web-mybatis 项目
➢ 创建一个新的SpringBoot的Module
北京动力节点 http://www.bjpowernode.com

➢ 指定GAV坐标

北京动力节点 http://www.bjpowernode.com

➢ 选择SpringBoot版本以及web依赖

北京动力节点 http://www.bjpowernode.com
➢ 修改Content root以及Mudule file location
( 3 ) 在 pom.xml 中添加相关 jar 依赖
<!--MyBatis整合SpringBoot的起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
北京动力节点 http://www.bjpowernode.com
<!--MySQL的驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
( 4 ) 在 Springboot 的核心配置文件 application.properties 中配
置数据源
注意根据自己数据库的信息修改以下内容
#配置内嵌Tomcat端口号
server.port= 9090
#配置项目上下文根
server.servlet.context-path=/010-springboot-web-mybatis
#配置数据库的连接信息
#注意这里的驱动类有变化
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot?useUnicode=t
rue&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyD
atetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password= 123456
( 5 ) 开发代码
➢ 使用Mybatis反向工程生成接口、映射文件以及实体bean,具体步骤参见附录 1
北京动力节点 http://www.bjpowernode.com

➢ 在web包下创建StudentController并编写代码

@Controller
public class StudentController {
@Autowired
private StudentService studentService;
@RequestMapping(value = "/springBoot/student")
public @ResponseBody Object student() {
Student student = studentService.queryStudentById( 1 );
return student;
}
}

➢ 在service包下创建service接口并编写代码

public interface StudentService {
/**
* 根据学生标识获取学生详情
* @param id
* @return
*/
Student queryStudentById(Integer id);
}

➢ 在service.impl包下创建service接口并编写代码

@Service
public class StudentServiceImpl implements StudentService {
北京动力节点 http://www.bjpowernode.com
@Autowired
private StudentMapper studentMapper;
@Override
public Student queryStudentById(Integer id) {
return studentMapper.selectByPrimaryKey(id);
}
}

➢ 如果在web中导入service存在报错,可以尝试进行如下配置解决

➢ 在Mybatis反向工程生成的StudentMapper接口上加一个Mapper注解

@Mapper作用:mybatis自动扫描数据持久层的映射文件及DAO接口的关系
@Mapper
public interface StudentMapper {

➢ 注意:默认情况下,Mybatis的xml映射文件不会编译到target的class目录下,所

以我们需要在pom.xml文件中配置resource
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
北京动力节点 http://www.bjpowernode.com
</resource>
</resources>
( 6 ) 启动 Application 应用,浏览器访问测试运行
3.1.3 DAO 其它开发方式
( 7 ) 在 运 行 的 主 类 上 添 加 注 解 包 扫 描
@MapperScan(“com.abc.springboot.mapper”)

注释掉StudentMapper接口上的@Mapper注解

在运行主类Application上加@MapperScan(“com.abc.springboot.mapper”)

@SpringBootApplication
@MapperScan(“com.abc.springboot.mapper”)
public class Application {

或

@SpringBootApplication
//Mybatis提供的注解:扫描数据持久层的mapper映谢配置文件,DAO接口上就不用加@Mapper
//basePackages通常指定到数据持久层包即可
@MapperScan(basePackages = “com.abc.springboot.mapper”)
public class Application {

测试运行

北京动力节点 http://www.bjpowernode.com
( 8 ) 将接口和映射文件分开
A 、 项目名称: 011 - springboot-web-mybatis
因为SpringBoot不能自动编译接口映射的xml文件,还需要手动在pom文件中指定,

所以有的公司直接将映射文件直接放到resources目录下

➢ 在resources目录下新建目录mapper存放映射文件,将StudentMapper.xml文件移
到resources/mapper目录下
➢ 在application.properties配置文件中指定映射文件的位置,这个配置只有接口和映
射文件不在同一个包的情况下,才需要指定
# 指定Mybatis映射文件的路径
mybatis.mapper-locations=classpath:mapper/*.xml
3.2 Spring Boot 事务支持
Spring Boot 使用事务非常简单,底层依然采用的是Spring本身提供的事务管理
➢ 在入口类中使用注解 @EnableTransactionManagement 开启事务支持
➢ 在访问数据库的Service方法上添加注解 @Transactional 即可
北京动力节点 http://www.bjpowernode.com
3.2.1 案例思路
通过SpringBoot +MyBatis实现对数据库学生表的更新操作,在service层的方法中构建

异常,查看事务是否生效

项目名称: 012 - springboot-web-mybatis-transacation

该项目是在 011 的基础上添加新增方法,在新增方法中进行案例的演示

3.2.2 实现步骤
( 9 ) 在 StudentController 中添加更新学生的方法

@RequestMapping(value = “/springboot/modify”)
public @ResponseBody Object modifyStudent() {

int count = 0 ;
try {
Student student = new Student();
student.setId( 1 );
student.setName(“Jack”);
student.setAge( 33 );
count = studentService.modifyStudentById(student);
} catch (Exception e) {
e.printStackTrace();
return “fail”;
}

return count;
}

( 10 ) 在 StudentService 接口中添加更新学生方法

/*** 根据学生标识更新学生信息
*** @param student

北京动力节点 http://www.bjpowernode.com

*** @return
*/
int modifyStudentById(Student student);

( 11 ) 在 StudentServiceImpl 接口实现类中对更新学生方法进
行实现,并构建一个异常,同时在该方法上加 @Transactional 注解

@Override
@Transactional //添加此注解说明该方法添加的事务管理
public int update(Student student) {

int updateCount = studentMapper.updateByPrimaryKeySelective(student);

System. out .println(“更新结果:” + updateCount);

//在此构造一个除数为 0 的异常,测试事务是否起作用
int a = 10 / 0 ;

return updateCount;
}

( 12 ) 在 Application 类上加 @EnableTransactionManagement
开启事务支持

@EnableTransactionManagement 可选,但是业务方法上必须添加 @Transactional 事务才生效

@SpringBootApplication
@MapperScan(basePackages = “com.abc.springboot.mapper”)
@EnableTransactionManagement //开启事务支持(可选项,但@Transactional必须添加)
public class Application {

北京动力节点 http://www.bjpowernode.com
( 13 ) 启动 Application ,通过浏览器访问进行测试
浏览器
控制台
数据库表
通过以上结果,说明事务起作用了
( 14 ) 注释掉 StudentServiceImpl 上的 @Transactional 测试
数据库的数据被更新
北京动力节点 http://www.bjpowernode.com
3.3 Spring Boot 下的 Spring MVC
Spring Boot下的Spring MVC和之前的Spring MVC使用是完全一样的,主要有以下注解
3.3.1 @Controller

Spring MVC的注解,处理http请求

3.3.2 @RestController
Spring 4 后新增注解,是@Controller注解功能的增强
是 @Controller与@ResponseBody的组合注解

如果一个Controller类添加了@RestController,那么该Controller类下的所有方法都相当

于添加了@ResponseBody注解

用于返回字符串或json数据

案例:
➢ 创建MyRestController类,演示@RestController替代@Controller + @ResponseBody
@RestController
public class MyRestController {
@Autowired
private StudentService studentService;
@RequestMapping("/boot/stu")
public Object stu(){
return studentService.getStudentById( 1 );
}
}
➢ 启动应用,浏览器访问测试
北京动力节点 http://www.bjpowernode.com
3.3.3 @RequestMapping (常用)
支持Get请求,也支持Post请求
3.3.4 @GetMapping

RequestMapping和Get请求方法的组合

只支持Get请求

Get请求主要用于查询操作

3.3.5 @PostMapping

RequestMapping和Post请求方法的组合

只支持Post请求

Post请求主要用户新增数据

3.3.6 @PutMapping

RequestMapping和Put请求方法的组合

只支持Put请求

Put通常用于修改数据

3.3.7 @DeleteMapping

RequestMapping 和 Delete请求方法的组合

只支持Delete请求

通常用于删除数据

3.3.8 综合案例

项目名称: 013 - springboot-springmvc项目集成springmvc

项目作用:演示常见的SpringMVC注解

北京动力节点 http://www.bjpowernode.com
( 15 ) 创建一个 MVCController ,里面使用上面介绍的各种注解
接收不同的请求

/*** 该案例主要演示了使用 Spring 提供的不同注解接收不同类型的请求
*/
//RestController注解相当于加了给方法加了@ResponseBody注解,所以是不能跳转页面的,
只能返回字符串或者json数据
@RestController
public class MVCController {

@GetMapping(value = “/query”)
public String get() {
return “@GetMapping注解,通常查询时使用”;
}

@PostMapping(value = “/add”)
public String add() {
return “@PostMapping注解,通常新增时使用”;
}

@PutMapping(value = “/modify”)
public String modify() {
return “@PutMapping注解,通常更新数据时使用”;
}

@DeleteMapping(value = “/remove”)
public String remove() {
return “@DeleteMapping注解,通常删除数据时使用”;
}
}

北京动力节点 http://www.bjpowernode.com
( 16 ) 启动应用,在浏览器中输入不同的请求进行测试
( 17 ) Http 接口请求工具 Postman 介绍
因为通过浏览器输入地址,默认发送的只能是get请求,通过Postman工具,可以模拟

发送不同类型的请求,并查询结果,在安装的时候,有些机器可能会需要安装MicroSort .NET

Framework

( 18 ) 使用 Postman 对其它请求类型做个测试
北京动力节点 http://www.bjpowernode.com
3.4 Spring Boot 实现 RESTful
3.4.1 认识 RESTFul

REST (英文: Representational State Transfer ,简称 REST )

一种互联网软件架构设计的风格,但它并不是标准,它只是提出了一组客户端和服务器

交互时的架构理念和设计原则,基于这种理念和原则设计的接口可以更简洁,更有层次,REST

这个词,是Roy Thomas Fielding在他 2000 年的博士论文中提出的。

任何的技术都可以实现这种理念,如果一个架构符合REST原则,就称它为RESTFul架

构

比如我们要访问一个http接口:http://localhost:8080/boot/order?id=1021&status=1
采用RESTFul风格则http地址为:http://localhost:8080/boot/order/1021/1
3.4.2 Spring Boot 开发 RESTFul
Spring boot开发RESTFul 主要是几个注解实现
( 1 ) @PathVariable
获取url中的数据
该注解是实现 RESTFul 最主要的一个注解
( 2 ) @PostMapping
接收和处理Post方式的请求
( 3 ) @DeleteMapping
接收delete方式的请求,可以使用GetMapping代替
北京动力节点 http://www.bjpowernode.com
( 4 ) @PutMapping
接收put方式的请求,可以用PostMapping代替
( 5 ) @GetMapping
接收get方式的请求
3.4.3 案例:使用 RESTful 风格模拟实现对学生的增删改查操作

项目名称: 014 - springboot-restful

该项目集成了MyBatis、spring、SpringMVC,通过模拟实现对学生的增删改查操作

( 6 ) pom.xml 文件添加内容如下

org.springframework.boot spring-boot-starter-web

org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.1

mysql mysql-connector-java

Spring Boot 完整教程 - 从入门到精通(全面版) Spring Boot 是由 Pivotal 团队提供的基于 Spring 框架的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。Spring Boot 核心理念:约定优于配置开箱即用微服务友好// 自动配置类@Bean// 配置属性类private String prefix = "默认前缀";// 服务类myservice:prefix: "自定义前缀"// 1. 配置属性类@Data// 2. 服务类。 阅读详情

相关推荐

Spring Boot系列十三 Spring Boot集成RabbitMQ

1. 概述之前我有一系列关于RabbitMQ文章介绍了RabbitMQ的用法,本篇我们介绍如何在Spring Boot中集成RabbitMQ。本篇主要内容如下: 在Spring boot中消息的发送和接收的两种方式的demo 配置使用MessageConverter对消息序列化 2. Demo工程公共部分介绍工程名称:rabbitmq需要在我们的工程中的pom.xml引入新jar <!-- spri

不积跬步无以至千里; 不积小流无以成江海 1万+

SpringBoot基础

SpringBoot基础 学习目标: 能够理解Spring的优缺点 能够理解SpringBoot的特点 能够理解SpringBoot的核心功能 能够搭建SpringBoot的环境 能够完成application.properties配置文件的配置 能够完成application.yml配置文件的配置 能够使用SpringBoot集成Mybatis 能够使用SpringBoot集成Junit 能够...

vampire_Violet的博客 3004

Spring Boot中对于超卖现象的问题分析和解决方案

本文只针对单体应用的高并发导致超卖的处理方案。 超卖是指商品本来只有固定的数量比如10个,但是在某一时刻有大量的并发请求涌入,导致商品卖出去了比如100个,这就是超卖现象。 本文以7种方案来实现减库存操作,然后分析每个方案有什么问题,哪个方案可以解决超卖。 场景设计 创建数据库: create database mytest charset=utf8; 复制代码 创建一个商品表: USE mytest; DROP TABLE IF EXISTS `tb_product`; CREATE T

mxy2404830的博客 2608

超详细的Springboot入门教程,看了必会

超详细的Springboot入门教程,看了必会

weixin_48227718的博客 2万+

Spring全家桶笔记:Spring+Spring Boot+Spring Cloud+Spring MVC

最近小编整理了一下一线架构师的Spring全家桶笔记:Spring+Spring Boot+Spring Cloud+Spring MVC,分享给大家一起学习一下~ 注意:有需要免费领取一线架构师的Spring全家桶笔记的朋友,可以点击【学习】免费领取,不要错过哦~ 01 Spring Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,S...

ITjianshuzhai的博客 834

Spring Boot基础学习笔记01:Spring Boot入门程序

1. 了解Spring Boot框架的优点; 2. 掌握使用Maven方式构建Spring Boot项目; 3. 掌握使用Spring Initializr方式构建Spring Boot项目

howard2005的专栏 2086

SpringBoot配置属性之MVC

SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之NOSQL SpringBoot配置属性之MQ SpringBoot配置属性之Security SpringBoot配置属性之Migration SpringBoot配置属性之其他

CODE男孩的博客 1万+

全面掌握Spring Boot的初学者指南

Spring Boot是一个为Java应用量身打造的开源框架,简化了基于Spring的应用开发过程。它提供了一种快速、广泛接受的解决方案,用于创建独立的、生产级别的Spring基础应用。Spring Boot的核心价值体现在:约定优于配置(CoC):它遵循约定优于配置的原则,允许开发者快速启动和运行应用,无需进行繁琐的配置。独立性:可以构建独立的Spring应用,无需部署到外部的Servlet容器中。自动生成配置。

weixin_34511754的博客 942

【JavaEE】Spring Boot 快速上手

本文介绍了使用Spring Boot和Maven开发Java Web应用的基础知识。首先说明了Spring Boot如何简化传统Spring应用的配置流程,随后详细讲解了Maven的核心功能,包括项目构建和依赖管理。文章重点演示了Maven依赖配置方法、依赖传递机制以及如何解决依赖冲突,并介绍了Maven Helper插件的使用。此外,还解释了Maven仓库的工作原理,包括本地仓库配置和中央仓库访问。最后,文章指导读者完成了一个简单的Spring Boot Web项目创建过程,实现"Hello W

REGARD712的博客 2328

Spring Boot初学者实战项目Demo(超实用精讲)

Data。

weixin_42168902的博客 746

Lmbench测试集 --- 延迟测试工具lat_mem_rd

lmbench测试集简介 以及 lat_mem_rd延迟测试工具: 如何测试、测试结果、源码分析

MonologueYY的博客 1万+

Java初学者如何创建自己的Spring Boot项目

本文旨在记录创建项目的全过程,适用于初学者,默认已经安装好 Idea

2203_75699167的博客 1008

LAP-D协议概述

Q.921协议由称为LAPD(链路访问协议-D通道),与HDLC的关系密切,它是在ISDN D通道上使用的数据链路协议。 注:http://www.freesoft.org/CIE/Topics/125.htm LAP-D的帧格式 标志、位填充技术和FCS校验计算与HDLC一致。 16位的地址包括C/R字段、SAPI(服务访问点标识)和TEI(端点标识)。TEI用于区分使用相同ISDN...

系统运维 1914

Spring vs Spring Boot:哪个更适合新手

对于新手来说,Spring Boot 是一个更适合入门的框架。它通过自动配置、简化依赖管理和独立运行的特性,显著降低了学习曲线,让新手能够快速搭建项目并专注于业务逻辑的实现。虽然 Spring 功能强大,但它的学习曲线较高,新手可能需要花费更多时间学习配置和核心概念。

Myqijiahai的博客 1102

一份针对零基础学习AI Agent详细学习计划

以下是针对零基础学习者制定的AI Agent详细学习计划,结合最新行业动态和实用资源推荐,帮助你从入门到进阶系统掌握核心技能

sexy19910923的博客 1903

OCR开发车架号识别vin码识别系统

一、vin码识别车架号识别系统简介   vin码识别车架号识别系统,结合VIN码主机厂数据库及自身多年文字识别经验,针对机动车配置参数等信息的查询及采集业务推出的一款VIN码自动识别产品。   车架号识别vin码识别,主要应用在智能手机IOS与Android两个平台中。前端扫描查询模式,无需联网,只需扫描汽车前挡风玻璃右下角的VIN玛(车架号),即可轻松识别出车辆产地、品牌、车

OCR13512721355的博客 1433

Spring Boot 学习笔记

Spring Boot 是由 Pivotal 团队开发的开源 Java 基础框架,用于简化 Spring 应用的开发过程。通过 Spring Boot,开发者可以轻松创建独立、生产级的 Spring 应用,而无需繁琐的配置和部署步骤。Spring Boot 内嵌了 Tomcat、Jetty 等主流 Web 容器,支持自动配置和依赖管理,极大地提高了开发效率。Spring Boot 是一个功能强大且易于使用的框架,通过简化配置和依赖管理,极大地提高了开发效率。

m0_72686196的博客 1050

FlowPic实战:从流量到图像的端到端加密应用识别

本文深入解析了FlowPic技术如何将网络流量转化为图像,并利用CNN模型进行端到端加密应用识别。该方法通过分析数据包大小和时序信息生成流量图像,有效绕过加密内容,实现对视频、聊天、文件传输等应用的精准分类。文章提供了从流量抓取、图像生成到轻量级CNN模型设计与训练的完整实战指南,并探讨了在VPN、Tor等复杂场景下的应用与挑战。

weixin_29046035的博客 150

Pippo与Spring Boot对比:哪个更适合你的Java微服务项目?

在Java微服务开发领域,选择合适的框架至关重要。Pippo作为一款轻量级的Micro Java Web Framework,与Spring Boot这样的全栈框架相比,各有其独特优势。本文将从性能、易用性、生态系统等多个维度对比两者,帮助你为项目做出明智选择。 [![Pippo框架logo](https://raw.gitcode.com/gh_mirrors/pi/pippo/raw/31f

gitblog_00719的博客 796

DAP-Link DIY复刻指南

DAP-Link是ARM开源的一个项目,主要用于代码下载以及调试,支持SWD和JTAG调试接口,对于开发嵌入式的同学相信都或多或少有所耳闻。除了DAP-Link之外还有很多同类型的调试器,如ST-LinkJ-Link,但是这些都是不开源的,无法复刻或进行二次开发。但DAP-Link不同,完全开源,不用担心侵权问题,且随着开源社区大家的共同努力,DAP-Link经过了不断的迭代,先如今已取代ARM之前推出的CMSIS-DAP开源项目。

爱出名的狗腿子 1万+

手把手教你学基于 Linux 的 NPU 固件开发-第 10 讲:可靠性设计(RAS)——让系统坚如磐石错误检测、纠正与上报机制(ECC、Parity)

组件推荐保护机制备注HBM/DDRScrubbing必须开启,定期巡检片上 SRAMECC(权重/激活值),Parity(指令)权衡面积与可靠性计算单元ABFT或DMR(关键路径)防止计算逻辑错误片上网络CRC重传保证数据传输完整性系统软件AER 上报CE 监控自动恢复闭环管理,杜绝 SDC运维策略预测性维护Checkpoint变被动为主动核心心法(信任硬件,但必须验证。在纳米尺度下,错误是必然发生的物理现象。

MHD0815的博客 90

SpringBoot学习笔记:开启Spring Boot快速学习之旅

SpringBoot学习笔记:开启Spring Boot快速学习之旅 【下载地址】SpringBoot学习笔记 SpringBoot学习笔记是一份全面而深入的学习资料,专为初学者和进阶开发者设计。通过这份笔记,您可以系统地掌握Spring Boot的基础知识、核心概念以及实战案例。无论是快速上手还是深入理解,这份资源都能...

gitblog_06728的博客 465

Simulink仿真模块 - Data Type Conversion

Data Type Conversion将输入信号转换为指定的数据类型 在仿真库中的位置为: Simulink / 常用模块 Simulink / Signal Attributes 模型为: 说明 DataTypeConversion模块可将任何 Simulink®数据类型的输入信号转换为您指定的数据类型。 注意 要通过指定模块参数来控制输出数据类型,或者要从下游模块继承数据类型,使用DataTypeConversion模块。要...

jk_101的博客 2519

Spring boot 学习笔记2

JPQL 是 Java Persistence Query Language 的缩写,它是 JPA(Java Persistence API)的一部分,用于操作持久化实体的查询语言。依赖注入(Dependency Injection, DI)是 Spring 框架的核心功能之一,它允许你将对象的依赖关系由 Spring 容器来管理,而不是在对象内部直接创建或查找这些依赖。它是一个核心注解,用于替代传统的 XML 配置文件,提供了一种基于注解的方式来定义 Spring 容器中的 Bean 和配置信息。

m0_72628591的博客 1000

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Spring Boot 入门指南:从基础到实战(初学者友好版)

本文是SpringBoot入门指南,重点讲解其核心价值和快速上手方法。SpringBoot解决了传统Spring开发中配置繁琐、依赖冲突、部署复杂等痛点,通过自动配置、起步依赖和内嵌服务器等特性简化开发流程。文章详细演示了如何在10分钟内搭建第一个SpringBoot项目,包括项目创建、接口编写、配置管理等基础操作,并通过用户CRUD案例展示实际开发流程。最后总结了初学者常见错误及解决方案,帮助开发者快速掌握SpringBoot的核心能力,为后续学习微服务开发打下基础。

2201_75941872的博客 915

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Spring Boot入门(初学者个人总结)

SpringBoot入门Spring Boot简介什么是Spring Boot?SpringBoot的优势构建项目依赖环境快速上手项目结构介绍Spring Boot的核心约定优于配置Starters启动器 Spring Boot简介 什么是Spring Boot? Spring Boot的核心设计思想是:约定优于配置 ,Spring Boot所有开发细节都是依据此思想进行实现的。使用Spring Boot构建任何东西。 Spring Boot是构建所有基于Spring的应用程序的起点,Spring Boot

qq_49670207的博客 502

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: SpringBoot入门到项目实战,带你快速上手springboot
下一篇: Java热门框架【SpringBoot】快速入门教程
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值