写点什么

读了这篇 SpringBoot 底层原理让我在阿里成功涨薪 40%,感谢

用户头像
Java 白
关注
发布于: 12 分钟前

前言:

SpringBoot 的好处是把 Java2EE 的各项技术的整合变得非常的简单,但是也有它的缺点,它的封装性太强,如果你想了解 SpringBoot 底层的原理,你必须对 SpringMvc、Spring 注解等比较了解,你才能更好的去了解 SpringBoot 底层原理。

同时它在阿里也是一种非常重要的技术点,长期以来这个技术点,也让我辗转反侧,深思了多个可以突破的技术点,正处于迷茫之际,偶然一天朋友推荐,有幸看到了这个 SpringBoot,让我备受感发!在此小编分享给大家。

由于文章篇幅原因,有需要的小伙伴仅需添加小助理 vx:XIaonan00000621 即可获取免费下载方式

目录

  • 快速入门

  • Web 开发

  • 日志相关

  • 数据访问

  • 定时任务与异步调用

  • 使用消息中间件

  • 其他功能与解析

正文

快速入门

  1. 第一份 Spring Boot 项目

  2. LntelliJ 中快速创建项目

  3. 最佳实践的工程结构(解析)

  4. 配置文件详解

SpringBoot 框架本身并没有对工程结构有特别的要求,但是按照最佳实践的工程结构可以帮助我们减

少可能会遇见的坑,尤其是 Spring 包扫描机制的存在,如果您使用最佳实践的工程结构,可以免去不

少特殊的配置工作。

典型示例

  • rootpackage 结构: com.example.myproject

  • 应用主类 Application.java 置于 rootpackage 下,通常我们会在应用主类中做一些框架配置扫

描等配置,我们放在 rootpackage 下可以帮助程序减少手工配置来加载到我们希望被 Spring 加载的内容

  • 实体(Entity)与数据访问层(Repository)置于 com.example.myproject.domain 包下

  • 逻辑层(Service)置于 com.example.myproject.service 包下

  • Web 层(web)置于 com.example.myproject.web 包下

com
复制代码


		+-	example
复制代码


				+-	myproject
复制代码


						+-	Application.java
复制代码


						|
复制代码


						+-	domain
复制代码


						|		+-	Customer.java
复制代码


						|		+-	CustomerRepository.java
复制代码


						|
复制代码


						+-	service
复制代码


						|		+-	CustomerService.java
复制代码


						|
复制代码


						+-	web
复制代码


						|		+-	CustomerController.java
复制代码


						|
复制代码

看看您现在的功能是否这样配置,如果不是,不妨尝试改变一下,看看是否可以去掉一些 @Configuration 配置?

更多解析:


Web 开发

  • 开发 RESTful 接口服务及单元测试

  • 开发 Web 应用,使用模版引擎与静态资源

  • Web 应用的统一异常处理

  • 使用 Swagger2 自动构建强大的 API 文档

  • 扩展 XML 请求和响应的支持

  • 使用 Spring-Security 进行安全控制


日志相关

  • SpringBoot 日志管理

  • 使用 AOP 统一处理 Web 请求日志

  • 使用 Log4j 记录日志

  • 使用 Log4j 将日志写入 MongoDB

  • 使用 Log4j 实现不同环境不同日志级别的控制

  • 动态修改日志级别


数据访问

文章资料都整理在一个文档里面了,需要的朋友可以私信"框架”获取哟

  • 用 JdbcTemplate 访问数据库

  • 使用 spring-data-jpa 实现简单优雅的数据库访问

  • 多数据源的配置与使用⽤

  • 使用 MyBatis 访问数据库

  • 使用 MyBatis 注解配置详解

  • 缓存支持(一)注解配置与 EhCache 使用

  • 缓存支持(二)使用 Redis 做集中式缓存

  • 访问 Redis

  • 访问 MongoDB

  • 增强对 MongoDB 的配置(连接池等)【解析】

  • 使用 LDAP 来统一管理用户信息

  • SpringBoot 中使用事务

  • 使用 Flyway 管理数据库版本

spring-boot-starter-mongodb-plus

几周之前,我就在 spring4all 的 github 上创建了这个项目,主要就是想扩展一下官方 springbootstarter

对 mongodb 的支持,提供更多配置属性,比如:连接数的配置等。

先来看看如果使用这个扩展,是否要比之前那样自己定制要方便的多:

如何使用

1. 在使用了 spring-boot-starter-data-mongodb 的项目中,增加以下依赖


com.spring4all

mongodb-plus-spring-boot-starter

1.0.0.RELEASE


1. 在应用主类上增加 @EnableMongoPlus 注解,比如:

@EnableMongoPlus

@SpringBootApplication

public class Application {

public static void main(String[]args) {

SpringApplication.run(Application.class,args);

}

}

可用配置参数

可用配置参数如下

spring.data.mongodb.option.min-connection-per-host=0

spring.data.mongodb.option.max-connection-per-host=100

spring.data.mongodb.option.threads-allowed-to-block-for-connection-multiplier=5

spring.data.mongodb.option.server-selection-timeout=30000

spring.data.mongodb.option.max-wait-time=120000

spring.data.mongodb.option.max-connection-idle-time=0

spring.data.mongodb.option.max-connection-life-time=0

spring.data.mongodb.option.connect-timeout=10000

spring.data.mongodb.option.socket-timeout=0

spring.data.mongodb.option.socket-keep-alive=false

spring.data.mongodb.option.ssl-enabled=false

spring.data.mongodb.option.ssl-invalid-host-name-allowed=false

spring.data.mongodb.option.always-use-m-beans=false

spring.data.mongodb.option.heartbeat-socket-timeout=20000

spring.data.mongodb.option.heartbeat-connect-timeout=20000

spring.data.mongodb.option.min-heartbeat-frequency=500

spring.data.mongodb.option.heartbeat-frequency=10000

spring.data.mongodb.option.local-threshold=15

上述配置值均为默认值



定时任务与异步调用

  • Scheduled 创建定时任务

  • Async 实现异步调用⽤

  • Async 实现异步调用:自定义线程池

  • Async 实现异步调用:线程池的优雅关闭

  • Async 实现异步调用:使用 Future 以及定义超时


使用消息中间件

使用 RabbitMQ


其他功能与解析

  • 自动化配置的利弊及解决之道

  • 后台运行配置

  • 使用 JavaMailSender 发送邮件

  • SpringBootActuator 监控端点小结

  • Actuator 的 Info 端点输出 Git 与构建信息


最后

有需要的小伙伴仅需添加小助理 vx:XIaonan00000621 即可获取免费下载方式

还有更多资料包含 Spring,MyBatis,Netty 源码分析,高并发、高性能、分布式、微服务架构的原理,JVM 性能优化这些成为架构师必备的知识体系。相信对于已经工作和遇到技术瓶颈的码友,在这里会有你需要的内容。

用户头像

Java 白

关注

还未添加个人签名 2021.06.21 加入

Java使我秃头

评论

发布
暂无评论
读了这篇SpringBoot底层原理让我在阿里成功涨薪40%,感谢