B058-SpringBoot

目录

      • springboot
        • 概念与作用
        • 入门案例
        • springboot运行方式
        • 热部署
        • 配置文件
        • Profile多环境支持
        • 整合测试-springboot-test
        • Springboot-web
        • 1.返回json数据
        • 2.返回页面(模板技术)thymeleaf
          • 1.导入thymeleaf依赖
          • 2.模板文件
          • 3.controller
          • 4.启动类
      • SSM整合
        • 1.导包
        • 2.项目目录结构+配置文件+扫描注解
        • 3.测试
      • 事务的传播机制

springboot

概念与作用

springboot是为 spring服务的,为简化Spring项目配置而生
它使用maven的方式对Spring应用开发进行进一步封装和简化
是用来简化spring应用搭建,开发,部署,监控的开发工具

简化Spring应用的搭建,开发,部署,监控的开发工具
简单的说,它使用maven的方式对Spring应用开发进行进一步封装和简化。
提供自动化配置
使编码更简单,使配置更简单,使部署更简单,使监控更简单

入门案例

创建Maven父项目和子项目

导入Spring Boot依赖
父节点添加parent依赖管理 子节点添加spring-boot-starter-web依赖

编码测试
新建一个Controller类
新建启动类
浏览器测试代码运行

<!--groupId:打包后放到本地仓库的路径artifactID:模块ID,同项目名
-->
<groupId>cn.itsource</groupId>
<artifactId>springboot-parent</artifactId>
<!--打包jar/war:将当前项目打包成jar或者warpom:代表当前项目是父项目,不写任何java代码,只用来管理子项目和插件maven-plugin:将当前项目打包成maven插件(牛)
-->
<packaging>pom</packaging>

父子项目在pom.xml文件的互相定位
在这里插入图片描述

springboot运行方式

1.直接点击main方法
2.使用插件运行
3.打包运行
配置打包依赖 用package命令 到jar包所在路径cmd打开黑窗口 运行jar

热部署

1.添加依赖
2.启动项目
3.改代码
4.重新编译(关键)

配置文件

application.yml
application.properties (首选)
1.有了properties 可以存在yml吗? 可以存在
2.如果同时存在,我该用谁? 优先用properties,但是可以同时使用不一样的配置
yml(推荐)
冒号
空格 回车/换行 缩进/tab (最后一个值,只需要空格)

Profile多环境支持

1.多文档块 (不推荐使用)
将所有的环境配置写到一个yml中,通过—(必须是三个横杆)做分隔
在这里插入图片描述
2.多文件方式
application-环境名.yml active表示生效环境
在这里插入图片描述

整合测试-springboot-test
1.基本测试  junit
2.基于Spring的测试在测试类加注解@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration("classpath:applicationContext.xml")
3.SpringBoot测试 - 使用流程导对应包/依赖				引入测试依赖包MyBean					@Component启动类						@SpringBootApplication		psvm	SpringApplication测试类						@RunWith(SpringRunner.class)	@SpringBootTest(classes = App.class)
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestApp.class)
public class TestSpringBoot {@AutowiredMyBean myBean;@Testpublic void testHello(){System.out.println(myBean);}
}
Springboot-web
1.返回json数据

如我们的controller中的所有方法,返回的都是json格式
那么请你使用:@RestController === @Controller + @ResponseBody

2.返回页面(模板技术)thymeleaf

在这里插入图片描述

1.导入thymeleaf依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2.模板文件

页面引入thymeleaf命名空间以支持th属性,使用th属性获取来自controller里model的数据

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>aaa</title>
</head>
<body><div th:text="${msg}">你好大兄弟</div>
</body>
</html>
3.controller

后端用model往页面添加数据,返回页面

@Controller
@RequestMapping("/thy")
public class ThyController {@RequestMapping("/index")public String toIndex(Model model){model.addAttribute("msg", "你好,thymeleaf!!!");return "hello";//页面路径/名称}
}

因为thymeleaf是页面,需要放置到资源文件中,SpringBoot的默认配置会到resources/templates/找模板
在这里插入图片描述

4.启动类

SSM整合

1.导包

导入mybatis核心包(mysql+jdbc)、Mybatis提供的SpringBoot依赖包、SpringBoot测试包

    <dependencies><!-- mysql 数据库驱动. --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!--Mybatis提供的SpringBoot依赖包--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.1.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies>
2.项目目录结构+配置文件+扫描注解

项目目录结构 domain query mapper service controller
在这里插入图片描述
核心配置文件yml (数据源四大金刚 扫描别名和扫描文件路径)

spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql:///mybatisusername: rootpassword: rootmybatis:type-aliases-package: cn.itsource.domain,cn.itsource.query		# 可免除实体类@Component注解mapper-locations: classpath:cn/itsource/mapper/*.xml

启动类加@MapperScan扫描

@SpringBootApplication
@MapperScan("cn.itsource.mapper")
public class SsmApp {public static void main(String[] args) {SpringApplication.run(SsmApp.class,args);}
}
3.测试

表&实体 -> mapper接口+xml实现 -> service -> test -> controller

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SsmApp.class)
public class TestProduct {@AutowiredProductServiceImpl productService;@Testpublic void test(){productService.loadAll().forEach(a->{System.out.println(a);});}@Testpublic void testSave(){Product product = new Product("测试数据");productService.save(product);}
}

注意resource包下不能一次直接建多层包

事务的传播机制

一组操作同时成功或者同时失败

    @Override@Transactionalpublic void save(Product product) {productMapper.save(product);//int i=1/0;}

只读事务 —加到查询上面

	@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)public List<Product> loadAll() {return productMapper.loadAll();}

类与方法上同时存在的注解使用哪个?就近原则

    @Service@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)public class ProductServiceImpl implements IProductService {@AutowiredProductMapper productMapper;@Override@Transactional		// 后面不写等同于@Transactional(readOnly = false, propagation = Propagation.REQUIRED)public void save(Product product) {productMapper.save(product);//int i=1/0;}@Overridepublic List<Product> loadAll() {return productMapper.loadAll();}}

一个方法里只能有一个事务
在这里插入图片描述
事务的传播机制:
REQUIRED:支持当前事务,如果当前没有事务,则新建一个事务(默认)
SUPPORTS:支持当前事务,当前当前没有事务,就不加事务
REQUIRES_NEW:新建事务,如果当前有事务,则把事务挂起,等着我先执行完成
NEVER: 不支持事务,如果当前有事务,则抛出异常

事务传播机制的作用:用来保证一组操作只有一个事务,解决事务冲突。

@Options(useGeneratedKeys = true, keyProperty = “id”, keyColumn = “id”)
@Insert(“insert into Demo(name,password) values(#{name},#{password})”)
public long save(Demo name);//对象上面也有

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/145428.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器人中的数值优化|【四】L-BFGS理论推导与延伸

机器人中的数值优化|【四】L-BFGS理论推导与延伸 往期内容回顾 机器人中的数值优化|【一】数值优化基础 机器人中的数值优化|【二】最速下降法&#xff0c;可行牛顿法的python实现&#xff0c;以Rosenbrock function为例 机器人中的数值优化|【三】无约束优化&#xff0c;拟牛…

让大脑自由

前言 作者写这本书的目的是什么&#xff1f; 教会我们如何让大脑更好地为自己工作。 1 大脑的运行机制是怎样的&#xff1f; 大脑的基本运行机制是神经元之间通过突触传递信息&#xff0c;神经元的兴奋和抑制状态决定了神经网络的运行和信息处理&#xff0c;神经网络可以通过…

使用Qt验证RGB格式

下面我们用不同的颜色来绘制一块矩形区域&#xff0c;来对比学习RGB颜色。 一片漆黑的黑色 黑色在RGB中是三个颜色分量都是0。也就是没有颜色。 下面我们绘制一个水平100个像素&#xff0c;垂直200个像素的矩形区域&#xff0c;颜色设置为黑色。 #ifndef MAINWINDOW_H #def…

SpringBoot整合阿里云OSS文件存储解决方案

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 &#x1f4d6;所属专栏&#xff1a;Sp…

Dink进阶之路

1、环境变量 cat /etc/profile #flink需要 export HADOOP_CLASSPATHhadoop classpath export HADOOP_CONF_DIR/etc/hadoop/conf2、Flink配置 2.1、flink-conf.yaml jobmanager.rpc.address: node-146 jobmanager.rpc.port: 6123 # 设置jobmanager总内存 jobmanager.memory.…

clip代码安装实操

CLIP模型及代码地址&#xff1a;GitHub - openai/CLIP: Contrastive Language-Image Pretraining 代码准备环境 先创建一个anaconda虚拟环境&#xff0c;包含python3.7版本&#xff0c;将该环境命名为clip。成功。 &#xff08; pytorch1.7.1 所需 python 版本 >3.6&…

React 入门笔记

前言 国庆值班把假期拆了个稀碎, 正好不用去看人潮人海, 趁机会赶个晚集入门一下都火这么久的 React 前端技术. 话说其实 n 年前也了解过一丢丢来着, 当时看到一上来就用 JS 写 DOM 的套路直接就给吓退了, 扭头还去看 Vue 了&#x1f923;, 现在从市场份额来看, 确实 React 还…

抓包习讯云院校数据通过PHP解析导入数据库

前言 最近&#xff0c;打卡APP需要这个数据&#xff0c;通过抓包后发现这个数据是固定的&#xff0c;获取很简单&#xff0c;但是数据太多&#xff0c;手动导入不显示&#xff0c;于是分析了json格式后果断通过脚本完成 【推荐】 《【MQTT】Esp32数据上传采集&#xff1a;最…

GitHub上有助于开发微信小程序的仓库

2023年9月30日&#xff0c;周六晚上 最近帮同学在GitHub找了一些开发小程序会用到的东西 目录 UI库WePY框架基于WePY框架的Demo微信小程序开发资源汇总 UI库 GitHub - Tencent/weui-wxss: A UI library by WeChat official design team, includes the most useful widgets/m…

CSS基础介绍2

CSS使用三种方式 方式1&#xff1a;在标签的style属性上设置CSS样式&#xff08;行内样式&#xff09; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>在标签的style属性上设置CSS样式</title>…

吉力宝:智能科技鞋品牌步力宝引领传统产业创新思维

在现代经济环境下&#xff0c;市场经济下产品的竞争非常的激烈&#xff0c;如果没有营销&#xff0c;产品很可能不被大众认可&#xff0c;酒香也怕巷子深&#xff0c;许多传统产业不得不面临前所未有的挑战。而为了冲出这个“巷子”&#xff0c;许多企业需要采用创新思维&#…

Sentinel学习(1)——CAP理论,微服务中的雪崩问题,和Hystix的解决方案 Sentinel的相关概念 + 下载运行

前言 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件&#xff0c;主要以流量为切入点&#xff0c;从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 本篇博客介绍CAP理论&#xff0c;微…

Egg使用jwt拦截jtoken验证

安装 npm install egg-jwt注册插件 在config文件夹子下 plugin,js下 use strict;module.exports {//mysqlmysql: {enable: true,package: egg-mysql},//jwtjwt: {enable: true,package: egg-jwt} };使用中间件 在app文件下创建 middleware 文件夹 在middleware 文件下创建…

安卓 kuaishou 设备did和egid 学习分析

did和egid注册 接口 https://gdfp.ksapisrv.com/rest/infra/gdfp/report/kuaishou/android did 是本地生成的16进制 或者 获取的 android_id public static final Random f16237a new Random(System.currentTimeMillis()); public static long m19668a() { return f1623…

网络-Ajax

文章目录 前言一、Ajax优点&#xff1a;缺点&#xff1a; 二、使用步骤XNLHttpRequest对象完整代码 总结 前言 本文主要记录Ajax技术的简介&#xff0c;以及用法。 一、Ajax Ajax是一组用于在Web浏览器和Web服务器之间进行异步通信的Web开发技术。 它代表着Asynchronous Java…

PS 切片工具 选择切片 切片存储

上文 PS 透视裁剪工具 中 我们简单讲述了透视裁剪工具 今天 我们来讲他后面的切片工具 首先 他的用途还是很多的 例如 你有一个很大的图片 其中包括 轮播 导航 主题内容 但他们都在一个图片上 你就可以用切片工具 将完整的图片切成多个部分 这里 我们选择了切片工具 光标也会…

leetcode-----二叉树习题

目录 前言 1. 二叉树的中序遍历 2. 相同的树 3. 二叉树的最大深度 4. 二叉树的最小深度 5.二叉树的前序遍历 6. 二叉树的后序遍历 7. 对称二叉树 前言 前面我们学习过了二叉树的相关知识点&#xff0c;那么今天我们就做做练习&#xff0c;下面我会介绍几道关于二叉树的…

大数据Flink(九十三):DML:Order By、Limit 子句

文章目录 DML:Order By、Limit 子句 一、Order By 子句

idea Springboot 校园助学贷款系统VS开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot 校园助学贷款系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用springboot框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统 具有完整的源代码和数据库&…

ASUS华硕天选4笔记本电脑FX507VV原厂Windows11系统

下载链接&#xff1a;https://pan.baidu.com/s/1W9tedHI3iFjaHju5eLkQ6g?pwd8dl2 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、华硕电脑管家、奥创控制中心等预装程序 由于时间关系,绝大部分资料没有上传&#xff0c;不是想要的型号&#xff0c;请联系客服获取。