SpringBoot学习总结

用最简单的语言阐述最深刻的知识,纯属个人总结,有所借鉴。

Spring、SpringMVC、SpringBoot的区别

Spring是一站式框架,设计内容多,基础是AOP和IOC,Spring配置文件复杂。

SpringMVC三层架构提供了web层的全套解决方案。 

SpringBoot提供默认配置及可插拔设计,方便快速开发。大多数使用默认配置并自动组装。简化开发,提高效率。

 

SpringBoot优点

  • 内置tomcat/Jetty,可以独立运行
  • 简化配置,自动装配
  • 支持热部署
  • 与spring生态系统集成非常容易

SpringBoot缺点

  • 缺少服务注册发现等外围方案
  • 缺少外围监控继承方案
  • 缺少外围安全管理方案
  • 缺少rest落地的URI规划方案
  • 将原有的spring项目转成springboot项目比较困难,适合构建新项目
  • 集成度很高,对于了解底层不容易
  • 中文文档很少,某一些问题定位解决比较难

 

SpringBoot配置文件及加载顺序

application.properties  配置不能覆盖  bootstrap.properties  的配置。application.properties  加载顺序为:

根目录config文件夹 -- 根目录 -- 类目录config文件夹 -- 类目录 ;从高到低依次覆盖并且配置互补。

bootstrap.properties  加载优先于  application.properties  。主要适用三点     

  • 使用spring cloud config配置中心时,用bootstrap.properties配置文件添加连接到配置中心的属性来加载外部配置中心的配置信息
  • 一些固定的不可覆盖的属性
  • 一些加密/解密的场景

配置文件格式以及区别

properties和yml两种格式,区别:

  • properties中以“.”分割,yml中以“:”分割
  • yml中格式与json跟接近,k-v格式,并且通过“:”赋值,每个k后必有一个空格

如果将properties换成yml,一定进行mvn clean install

 

springBoot核心注解

启动类

@SpringBootApplication 是核心注解,是一个组合注解,主要包括以下三个注解:

  • @SpringBootConfiguraiton:组件扫描,是一个组合注解(@ImportResource可以指定多个xml配置文件)
  • @ComponentScan:开启组件扫描,默认扫描@SpringBootApplication所在类的同级目录以及他的子目录,注册bean实例到context中,该注解是可重复注解。以上两个注解组合起来就可以扫描 用户自定义包下面的类 。
  • @EnableAutoConfiguration:启用自动装配,使项目中依赖的jar包自动配置,这个注解可以自动装配系统自带的类。

我们可以利用利用exclude将一些不需要的配置关闭:

@ImportResource  这个注解可以引入我们的xml配置文件

实体类的注解

@Entity  表明这是一个实体类,要与数据库做orm映射。需要与@Id结合使用

@Id  将该属性设置为主键 

@Data  注解类;所有属性getting和 setting方法

@Getter 注解属性;提供 setting 方法

@Setter  注解属性;提供 getting 方法

@JsonIgnore 注解属性或者方法(最好是属性),json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响

控制层的注解

@RestController  =  @ResponseBody  +  @Controller

@RequestMapping   @PostMapping   @GetMapping  为控制器指定可以处理的URL请求

@PostMapping = @RequestMapping(method = RequestMethod.POST) Create(C)

@GetMapping = @RequestMapping(method = RequestMethod.GET) Read(R)   

@PutMapping = @RequestMapping(method = RequestMethod.PUT) Update(U)

@DeleteMapping = @RequestMapping(method = RequestMethod.DELETE) Delete(D)

@RequestParam GET和POST请求传的参数会自动转换赋值到@RequestParam 所注解的变量上

@RequestBody   可以接收json数据,并转换成对应的数据类型。(不能用GET,只能用post传值)

@Valid 实现参数验证

业务处理层的注解

@Service  用于标注服务层,主要用来进行业务的逻辑处理

@Transactional 开启事务的注解

数据交互层的注解

@Repository  用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.

定时任务的注解

启动类:@EnableScheduling

目标类:@EnableAsync

目标方法:@Scheduled

其他常用注解

@Log4j   @Slf4j   这两个为日志注解

@Component 把普通pojo实例化到spring容器中

@Autowired  按类型byType装配,如要按照名称注入,则需要结合@Qualifier

@Resource   按名称byName装配,找不到与名称匹配的bean时按照类型进行装配。

@Bean 会实例化、配置并初始化一个新的对象,由Spring IOC 容器管理

 

 

SpringBoot的自动配置原理

@EnableAutoConfiguration  和  @SpringBootConfiguraiton注解。

 

开启springBoot特性方式

  • 继承spring-boot-starter-parent项目 (pom.xml中添加,默认常用)
  • 导入spring-boot-dependencies项目依赖 

 

Spring运行方式

  • 独立运行,内置了Tomcat/Jetty等容器
  • 打包运行,用命令或者放在容器中
  • 插件运行,maven/gradle

 

SpringBoot目录结构

  • src/main/java 存放启动类application.java以及代码包
  • src/main/resource 存放配置文件 以及 静态资源

 

SpringBoot 如何定义多套不同环境配置

   

sit开发环境,uat/test测试环境,dev预生产灰度环境,prod生产环境

 

SpringBoot支持的日志框架

Log4j(真正日志工具)、Slf4j(日志适配器),默认LogBack日志框架

 

SpringBoot读取配置文件的方式

 @Value,@Environment,@PropertySource

 

实现热部署

Spring Loaded 和 Spring-boot-devtools 

创建项目勾选devtools或者项目中在pom.xml中引入devtools依赖。

 

SpringBoot兼容老Spring项目

用@ImportResource注解导入项目配置文件。

 

如何保护springBoot应用程序

  • 生产中使用HTTPS,确保应用程序间隐私和数据完整性
  • 定期更新依赖,修复安全问题

 

SpringBoot常用的starter

  • spring-boot-starter-web : 嵌入tomcat和web开发需要servlet与jsp支持
  • spring-boot-starter-data-jpa : 数据库支持
  • spring-boot-starter-data-redis : redis数据库支持
  • spring-boot-starter-data-solr

 

个人学习总结,如有错误不妥之处,欢迎评论指出,共同进步

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值