SpringBoot总结

简介: SpringBoot总结

1、Spring是如何简化Java开发的

为了降低Java开发的复杂性,Spring采用了以下4种关键策略:


1、基于POJO的轻量级和最小侵入性编程,所有东西都是bean;


2、通过IOC,依赖注入(DI)和面向接口实现松耦合;


3、基于切面(AOP)和惯例进行声明式编程;


4、通过切面和模版减少样式代码,RedisTemplate,xxxTemplate;


2、什么是SpringBoot

1、就是一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb框架的好处,官方说是简化开发,约定大于配置, you can “just run”,能迅速的开发web应用,几行代码开发一个http接口


2、同时它集成了大量常用的第三方库配置(例如 Redis、MongoDB、Jpa、RabbitMQ、Quartz 等等),Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用


3、Spring Boot 基于 Spring 开发,SSM打包方式是war包,SpringBoot打包方式是jar包,集了Tomcat在里面,方便微服务开发。


简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架 。


Spring Boot的主要优点:


为所有Spring开发者更快的入门

开箱即用,提供各种默认配置来简化项目配置

内嵌式容器简化Web项目

没有冗余代码生成和XML配置的要求

3、yaml基础语法

说明:语法要求严格!


1、空格不能省略


2、以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。


3、属性和值的大小写都是十分敏感的。


字面量:普通的值 [ 数字,布尔值,字符串 ]


字面量直接写在后面就可以 , 字符串默认不用加上双引号或者单引号;


k: v

1

注意:


“ ” 双引号,不会转义字符串里面的特殊字符 , 特殊字符会作为本身想表示的意思;


比如 :name: Mario \n Kim" 输出 :Mario 换行 Kim


‘’ 单引号,会转义特殊字符 , 特殊字符最终会变成和普通字符一样输出


比如 :name: ‘Mario \n Kim’ 输出 :Mario \n Kim


//这个注解是将application.yaml中的person属性与Person类进行绑定
@ConfigurationProperties(prefix = "person")

53cebc6e786d4ad8ad8714011a9d24ef.png


加载指定的配置文件


**@PropertySource :**加载指定的配置文件;


@configurationProperties:默认从全局配置文件中获取值;


1、我们去在resources目录下新建一个person.properties文件

name=Mario

2、然后在我们的代码中指定加载person.properties文件


4、JSR303数据校验

导pom

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

写注解


c7932f6ecd044fd0af4686cf7fef28b3.png


JSR303数据校验–常用的注解如下:

@NotNull(message="名字不能为空")
private String userName;
@Max(value=120,message="年龄最大不能查过120")
private int age;
@Email(message="邮箱格式错误")
private String email;
空检查
@Null       验证对象是否为null
@NotNull    验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank   检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty   检查约束元素是否为NULL或者是EMPTY.
Booelan检查
@AssertTrue     验证 Boolean 对象是否为 true  
@AssertFalse    验证 Boolean 对象是否为 false  
长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  
@Length(min=, max=) string is between min and max included.
日期检查
@Past       验证 Date 和 Calendar 对象是否在当前时间之前  
@Future     验证 Date 和 Calendar 对象是否在当前时间之后  
@Pattern    验证 String 对象是否符合正则表达式的规则

10c105f99b3349a5b508962ff54161c1.png


5、多环境切换

profile是Spring对不同环境提供不同配置功能的支持,可以通过激活不同的环境版本,实现快速切换环境;


properties 文件的多环境切换


我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml , 用来指定多个环境版本;


例如:


application-test.properties 代表测试环境配置


application-dev.properties 代表开发环境配置


但是Springboot并不会直接启动这些配置文件,它默认使用application.properties主配置文件;


我们需要通过一个配置来选择需要激活的环境:


#比如在配置文件中指定使用dev环境,我们可以通过设置不同的端口号进行测试;
#我们启动SpringBoot,就可以看到已经切换到dev下的配置了;
spring.profiles.active=dev

yaml文件的多环境切换

server:
  port: 8081
#选择要激活那个环境块
spring:
  profiles:
    active: prod
---
server:
  port: 8083
spring:
  profiles: dev #配置环境的名称
---
server:
  port: 8084
spring:
  profiles: prod  #配置环境的名称

注意:如果yml和properties同时都配置了端口,并且没有激活其他环境 , 默认会使用properties配置文件的


6、修改Spring Boot启动的banner和网页icon

修改banner


在resources目录下新建一个banner.txt


https://www.bootschool.net/ascii这个网站上找个图案,贴在banner.txt文件中


banner.txt

──────────────███████──███████
──────────████▓▓▓▓▓▓████░░░░░██
────────██▓▓▓▓▓▓▓▓▓▓▓▓██░░░░░░██
──────██▓▓▓▓▓▓████████████░░░░██
────██▓▓▓▓▓▓████████████████░██
────██▓▓████░░░░░░░░░░░░██████
──████████░░░░░░██░░██░░██▓▓▓▓██
──██░░████░░░░░░██░░██░░██▓▓▓▓██
██░░░░██████░░░░░░░░░░░░░░██▓▓██
██░░░░░░██░░░░██░░░░░░░░░░██▓▓██
──██░░░░░░░░░███████░░░░██████
────████░░░░░░░███████████▓▓██
──────██████░░░░░░░░░░██▓▓▓▓██
────██▓▓▓▓██████████████▓▓██
──██▓▓▓▓▓▓▓▓████░░░░░░████
████▓▓▓▓▓▓▓▓██░░░░░░░░░░██
████▓▓▓▓▓▓▓▓██░░░░░░░░░░██
██████▓▓▓▓▓▓▓▓██░░░░░░████████
──██████▓▓▓▓▓▓████████████████
────██████████████████████▓▓▓▓██
──██▓▓▓▓████████████████▓▓▓▓▓▓██
████▓▓██████████████████▓▓▓▓▓▓██
██▓▓▓▓██████████████████▓▓▓▓▓▓██
██▓▓▓▓██████████      ██▓▓▓▓████
██▓▓▓▓████              ██████

修改网页icon


设置步骤:


将选好的图片改为 .ioc 为后缀,一般命名 favicon.ico,并将其放在 resources 文件夹下的 static 文件夹下(如果没有可以自己创建)。


在首页 index.html 中设置

<link rel="icon" href="/favicon.ico">

注:测试时Ctrl + F5 强制清理一下浏览器的缓存记录

<!--thymeleaf-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
//在 templates 目录下的所有页面,只能通过controller来访问,因为templates目录是受保护的,但是在static目录下就可以直接访问
//需要引入pom依赖的 Thymeleaf模板引擎
@Controller
public class IndexController {
    @RequestMapping("/index")
    public String index(){
        return "index";
    }
}

访问http://localhost:8080/index就可以看到icon


7、常用注解的说明

@Select

==> @Select注解的目的是为了取代xml中的select标签,只作用于方法上面。


(1)@Select注解只能修饰方法

(2)@Select注解的值是字符数组。


@ResponseBody

返回 ==> 字符串+结果


注解 @ResponseBody,使用在控制层(controller)的方法上。


当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。


作用:将方法的返回值,以特定的格式写入到response的body区域,进而将数据返回给客户端。


@RequestBody

主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的),所以只能发送POST请求


GET方式无请求体,所以使用**@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交**


在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。


注:一个请求,只有一个RequestBody;一个请求,可以有多个RequestParam


@RestController


@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器 bean,并且是将函数的返回值直 接填入 HTTP 响应体中,是 REST 风格的控制器。


@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping、@RequestMapping

@GetMapping


@GetMapping(“users”) 等价于@RequestMapping(value=“/users”,method=RequestMethod.GET)


@PutMapping: 和PostMapping作用等同,都是用来向服务器提交信息。


如果是添加信息,倾向于用@PostMapping,


如果是更新信息,倾向于用@PutMapping。两者差别不是很明显。


8、代码托管

https://gitee.com/jinyang-jy/shiro.git


–end–


相关文章
|
6月前
|
Java 数据库
SpringBoot整合tkMapper
SpringBoot整合tkMapper
46 0
|
Dubbo Java 应用服务中间件
91.【SpringBoot-03】(四)
91.【SpringBoot-03】
65 0
|
Java 应用服务中间件 容器
|
4月前
|
Java 应用服务中间件 Maven
|
6月前
|
JSON Java 应用服务中间件
SpringBoot
SpringBoot
28 1
|
Java Unix 调度
springboot快速整合任务
springboot快速整合任务
|
6月前
|
JSON Java 数据安全/隐私保护
Springboot 之 HandlerMethodReturnValueHandler 运用
Springboot 之 HandlerMethodReturnValueHandler 运用
144 0
|
XML Java 数据库连接
89.【SpringBoot-02】(三)
89.【SpringBoot-02】
55 0
|
负载均衡 Java 应用服务中间件
87.【SpringBoot-01】(一)
87.【SpringBoot-01】
88 0