learn.lianglianglee.com/专栏/Spring Boot 实战开发/index.html
2022-08-14 03:40:33 +08:00

196 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<!-- saved from url=(0046)https://kaiiiz.github.io/hexo-theme-book-demo/ -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<link rel="icon" href="/static/favicon.png">
<title>note-submit</title>
<!-- Spectre.css framework -->
<link rel="stylesheet" href="/static/index.css">
<!-- theme css & js -->
<meta name="generator" content="Hexo 4.2.0">
</head>
<body>
<div class="book-container">
<div class="book-sidebar">
<div class="book-brand">
<a href="/">
<img src="/static/favicon.png">
<span>技术文章摘抄</span>
</a>
</div>
<div class="book-menu uncollapsible">
<ul class="uncollapsible">
<li><a href="/" class="current-tab">首页</a></li>
</ul>
<ul class="uncollapsible">
<li><a href="../">上一级</a></li>
</ul>
<ul class="uncollapsible">
<li>
<a href="/PDF">PDF</a>
</li>
<li>
<a href="/专栏">专栏</a>
</li>
<li>
<a href="/恋爱必修课">恋爱必修课</a>
</li>
<li>
<a href="/文章">文章</a>
</li>
<li>
<a href="/极客时间">极客时间</a>
</li>
</ul>
</div>
</div>
<div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
<div class="sidebar-toggle-inner"></div>
</div>
<script>
function add_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.add('show')
}
function remove_inner() {
let inner = document.querySelector('.sidebar-toggle-inner')
inner.classList.remove('show')
}
function sidebar_toggle() {
let sidebar_toggle = document.querySelector('.sidebar-toggle')
let sidebar = document.querySelector('.book-sidebar')
let content = document.querySelector('.off-canvas-content')
if (sidebar_toggle.classList.contains('extend')) { // show
sidebar_toggle.classList.remove('extend')
sidebar.classList.remove('hide')
content.classList.remove('extend')
} else { // hide
sidebar_toggle.classList.add('extend')
sidebar.classList.add('hide')
content.classList.add('extend')
}
}
function open_sidebar() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.add('show')
overlay.classList.add('show')
}
function hide_canvas() {
let sidebar = document.querySelector('.book-sidebar')
let overlay = document.querySelector('.off-canvas-overlay')
sidebar.classList.remove('show')
overlay.classList.remove('show')
}
</script>
<div class="off-canvas-content">
<div class="columns">
<div class="column col-12 col-lg-12">
<div class="book-navbar">
<!-- For Responsive Layout -->
<header class="navbar">
<section class="navbar-section">
<a onclick="open_sidebar()">
<i class="icon icon-menu"></i>
</a>
</section>
</header>
</div>
<div class="book-content"
style="max-width: 960px; margin: 0 auto; overflow-x: auto; overflow-y: hidden;">
<div class="book-post">
<p id="tip" align="center"></p>
<div><!--add content-->
<h1>Spring Boot 实战开发</h1>
<ul>
<li><a href = '\专栏\Spring Boot 实战开发\00 开篇词 从零开始:为什么要学习 Spring Boot.md.html'>00 开篇词 从零开始:为什么要学习 Spring Boot</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\01 家族生态:如何正确理解 Spring 家族的技术体系?.md.html'>01 家族生态:如何正确理解 Spring 家族的技术体系?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\02 案例驱动:如何剖析一个 Spring Web 应用程序?.md.html'>02 案例驱动:如何剖析一个 Spring Web 应用程序?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\03 多维配置:如何使用 Spring Boot 中的配置体系?.md.html'>03 多维配置:如何使用 Spring Boot 中的配置体系?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\04 定制配置:如何创建和管理自定义的配置信息?.md.html'>04 定制配置:如何创建和管理自定义的配置信息?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\05 自动配置:如何正确理解 Spring Boot 自动配置实现原理?.md.html'>05 自动配置:如何正确理解 Spring Boot 自动配置实现原理?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\06 基础规范:如何理解 JDBC 关系型数据库访问规范?.md.html'>06 基础规范:如何理解 JDBC 关系型数据库访问规范?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\07 数据访问:如何使用 JdbcTemplate 访问关系型数据库?.md.html'>07 数据访问:如何使用 JdbcTemplate 访问关系型数据库?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\08 数据访问:如何剖析 JdbcTemplate 数据访问实现原理?.md.html'>08 数据访问:如何剖析 JdbcTemplate 数据访问实现原理?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\09 数据抽象Spring Data 如何对数据访问过程进行统一抽象?.md.html'>09 数据抽象Spring Data 如何对数据访问过程进行统一抽象?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\10 ORM 集成:如何使用 Spring Data JPA 访问关系型数据库?.md.html'>10 ORM 集成:如何使用 Spring Data JPA 访问关系型数据库?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\11 服务发布:如何构建一个 RESTful 风格的 Web 服务?.md.html'>11 服务发布:如何构建一个 RESTful 风格的 Web 服务?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\12 服务调用:如何使用 RestTemplate 消费 RESTful 服务?.md.html'>12 服务调用:如何使用 RestTemplate 消费 RESTful 服务?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\13 服务调用:如何正确理解 RestTemplate 远程调用实现原理?.md.html'>13 服务调用:如何正确理解 RestTemplate 远程调用实现原理?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\14 消息驱动:如何使用 KafkaTemplate 集成 Kafka.md.html'>14 消息驱动:如何使用 KafkaTemplate 集成 Kafka</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\15 消息驱动:如何使用 JmsTemplate 集成 ActiveMQ.md.html'>15 消息驱动:如何使用 JmsTemplate 集成 ActiveMQ</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\16 消息驱动:如何使用 RabbitTemplate 集成 RabbitMQ.md.html'>16 消息驱动:如何使用 RabbitTemplate 集成 RabbitMQ</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\17 安全架构:如何理解 Spring 安全体系的整体架构?.md.html'>17 安全架构:如何理解 Spring 安全体系的整体架构?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\18 用户认证:如何基于 Spring Security 构建用户认证体系?.md.html'>18 用户认证:如何基于 Spring Security 构建用户认证体系?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\19 服务授权:如何基于 Spring Security 确保请求安全访问?.md.html'>19 服务授权:如何基于 Spring Security 确保请求安全访问?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\20 服务监控:如何使用 Actuator 组件实现系统监控?.md.html'>20 服务监控:如何使用 Actuator 组件实现系统监控?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\21 指标定制:如何实现自定义度量指标和 Actuator 端点?.md.html'>21 指标定制:如何实现自定义度量指标和 Actuator 端点?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\22 运行管理:如何使用 Admin Server 管理 Spring 应用程序?.md.html'>22 运行管理:如何使用 Admin Server 管理 Spring 应用程序?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\23 数据测试:如何使用 Spring 测试数据访问层组件?.md.html'>23 数据测试:如何使用 Spring 测试数据访问层组件?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\24 服务测试:如何使用 Spring 测试 Web 服务层组件?.md.html'>24 服务测试:如何使用 Spring 测试 Web 服务层组件?</a></li>
<li><a href = '\专栏\Spring Boot 实战开发\结束语 以终为始Spring Boot 总结和展望.md.html'>结束语 以终为始Spring Boot 总结和展望</a></li>
</ul>
</div>
</div>
<div>
</div>
</div>
</div>
</div>
</div>
<a class="off-canvas-overlay" onclick="hide_canvas()"></a>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194"
integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw=="
data-cf-beacon='{"rayId":"70996b2f083d3d60","version":"2021.12.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","si":100}'
crossorigin="anonymous"></script>
</body>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'G-NPSEEVD756');
var path = window.location.pathname
var cookie = getCookie("lastPath");
console.log(path)
if (path.replace("/", "") === "") {
if (cookie.replace("/", "") !== "") {
console.log(cookie)
document.getElementById("tip").innerHTML = "<a href='" + cookie + "'>跳转到上次进度</a>"
}
} else {
setCookie("lastPath", path)
}
function setCookie(cname, cvalue) {
var d = new Date();
d.setTime(d.getTime() + (180 * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i].trim();
if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
}
return "";
}
</script>
</html>