看完这篇SpringBoot让我在阿里成功涨薪40%,感谢
前言:
SpringBoot的好处是把Java2EE的各项技术的整合变得非常的简单,但是也有它的缺点,它的封装性太强,如果你想了解SpringBoot底层的原理,你必须对SpringMvc、Spring注解等比较了解,你才能更好的去了解SpringBoot底层原理。
同时它在阿里也是一种非常重要的技术点,长期以来这个技术点,也让我辗转反侧,深思了多个可以突破的技术点,正处于迷茫之际,偶然一天朋友推荐,有幸看到了这个SpringBoot,让我备受感发!在此小编分享给大家。
由于文章篇幅原因,文末有答案和解析
目录
快速入门
Web开发
日志相关
数据访问
定时任务与异步调用
使用消息中间件
其他功能与解析
正文
快速入门
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与构建信息

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