SpringBoot核心注解与配置详解

目录

一.SpringBoot

组成

[二.Spring MVC](#二.Spring MVC)

注解

1.@RestController

2.@RequestMapping

属性1.value

属性2.method

属性3.params

属性4.headers

3.@RequestParam

4.@RequestBody

5.@PathVariable

6.@RequestPart

[二.Cookie和Session------HTTP 协议的「无状态」问题](#二.Cookie和Session——HTTP 协议的「无状态」问题)

1.设置Cookie

2.获取Cookie

方法一

方法二

3.存储Session

4.获取Session

方法一

方法二

方法三

5.获取Header

方法一

方法二

[三.Sping IoC和DI](#三.Sping IoC和DI)

IoC

1.类注解:

2.方法注解

DI

[1.属性注⼊(Field Injection)](#1.属性注⼊(Field Injection))

[2.构造⽅法注⼊(Constructor Injection)](#2.构造⽅法注⼊(Constructor Injection))

[3.Setter 注入(Setter Injection)](#3.Setter 注入(Setter Injection))

四.SpringBoot配置(#"来添加注释)

配置文件配置

roperties配置

[yml 配置](#yml 配置)

内容配置

配置字符串时

配置对象

配置集合

配置Map

五.SpringBoot日志(可以使用lombok调用)

1.日志分类

[2. 配置日志级别](#2. 配置日志级别)

Properties配置

yml配置

3.日志持久化

1.logging.file.name:设置日志的路径和文件名

Properties配置

yml配置

[2.logging.file.path:设置存储日志的路径, 文件名为固定的spring.log](#2.logging.file.path:设置存储日志的路径, 文件名为固定的spring.log)

Properties配置

yml配置

4.日志文件分割

Properties配置

yml配置


一.SpringBoot

以Spring Framework为基础,可以使用Spring Framework中的Spring MVC,Spring IOC,Spring DI,SpringAOP

组成

src/main/java: Java 源代码

/static:静态资源文件夹, 比如js, css, html等静态文件, 不需要服务器数据进行绑定的页面

/templates:模版资源文件夹, 主要存放动态模板文件, 比如JSP, Freemarker,Thymeleaf等需要服务器动态渲染数据的文件

src/test/java: 测试代码源代码

target: 编译后的文件路径

pom.xml: maven 配置文件

4xx 的状态码表示路径不存在, 往往需要检查 URL 是否正确, 和代码中设定的 Context Path 以及Servlet Path 是否⼀致

5xx 的状态码表示服务器出现错误, 往往需要观察页面提⽰的内容和 Tomcat 自身的日志, 观察是否存在报错

二.Spring MVC

web应用程序⼀般分为三层,即:Controller、Service、Dao

浏览器发起请求, 先请求Controller, Controller接收到请求之后, 调用Service进行业务逻辑处理, Service再调用Dao

完整的请求路径=【类上注解】 + 【方法上注解】

注解

1.@RestController

@RestController返回的是数据

@RestController = @Controller + @ResponseBody

@Controller返回的是页面视图,可以解析HTML,如果要返回数据加上@ResponseBody

2.@RequestMapping

完整的请求路径=【类上注解】 + 【方法上注解】

把【前端的 HTTP 请求】和【后端的 Java 方法 / 类】做绑定映射

用来在浏览器访问实现对应功能的接口,以/开始

访问一般都是http://127.0.0.1:8080/后面加上资源路径

属性1.value

请求的 URL 路径,可以实现多路径,和第一个路径格式相同"/ "

属性2.method

@RequestMapping 既支持get请求, 又支持post,请求方式写错,直接报 405 错误

@GetMapping("/ ")=@RequestMapping(value="/ ",method= RequestMethod.Get)

@PostMapping("/ ")=@RequestMapping(value="/ ",method= RequestMethod.Post)

属性3.params

指定「前端请求必须携带某个参数」,才会匹配该方法

属性4.headers

指定「前端请求必须包含某个请求头」,才会匹配该方法

3.@RequestParam

获取【URL 地址栏中 ?后面拼接的「键值对」请求参数】

前端传的参数名和后端方法的形参名完全一致,直接在形参前加@RequestParam即可

参数名不一致的可以用来重命名前后端的参数值,用和前端相同的名字来接收前端传来参数,然后在后端进行重命名

传递集合------定义一个@RequestParam List<>

4.@RequestBody

只能用在【POST/PUT】请求中,GET 不能用

接收前端传来的【纯 JSON 格式字符串】,并自动将 JSON 数据封装 / 转换为 Java 的实体类对象

设置参数是非必填的required = false

@JsonProperty("前端key名") 标注实体类属性,用和前端相同的名字来接收前端传来参数,然后在后端进行重命名

5.@PathVariable

获取 URL 路径中的动态参数,并绑定到对应的参数中

传递单个参数:@GetMapping("/{参数名}") + @PathVariable 形参

传递多个参数:多个{参数名}即可

6.@RequestPart

接收上传的文件

获取单个文件:@RequestPart("参数名") MultipartFile file

获取多个文件:只需要把MultipartFile改成数组 /集合 MultipartFile[] files

二.Cookie和Session------HTTP 协议的「无状态」问题

1.设置Cookie

在传参数时传入HttpServletResponse response,使用response中的addCookie

2.获取Cookie

方法一

在传参数时传入HttpServletRequest request,然后定义一个cookies来拿去request中的getCookies

Cookie[ ] cookies = request.getCookies( )

方法二

在传参数时传入@CookieValue,参数名和传入的cookie参数名要一致

3.存储Session

在传参数时传入HttpServletRequest request然后定义一个session来拿取request中的getSession

HttpSession session = request.getSession( )

4.获取Session

Session是服务器端的机制, 我们需要先存储, 才能再获取

方法一

在传参数时传入@SessionAttribute(value = " ",required = false)

required=false:非必填,没有这个key也不会报错,变量值为null

方法二

在参数传入HttpSession session,然后调用getAttribute(" ")

方法三

在传参数时传入HttpServletRequest request

定义HttpSession session = request.getSession();然后调用 session中的getAttribute

5.获取Header

方法一

在传参数时传入HttpServletRequest request,然后调用request中的getHeader

方法二

在传参数时传入@RequestHeader(" ")

三.Sping IoC和DI

IoC

Inversion of Control (控制反转), 也就是说 Spring 是⼀个"控制反转"的容器

Spring 容器 管理的主要是对象, 这些对象, 我们称之为"Bean". 我们把这些对象交由Spring管理, 由Spring来负责对象的创建和销毁.

1.类注解:

@Component(组件存储)

@Controller:控制层, 接收请求, 对请求进⾏处理, 并进⾏响应

@Servie(服务存储):业务逻辑层, 处理具体的业务逻辑

@Repository(仓库存储):数据访问层,也称为持久层. 负责数据访问操作

@Configuration(配置存储):配置层. 处理项⽬中的⼀些配置信息

@Controller , @Service ,@Repository,@Configuratio,这些注解被称为 @Component 的衍生注解

2.方法注解

@Bean(方法注解要配合类注解使用)

主动获取容器中的方法

从Spring容器中获取对象:在方法前面加上@SpringBootApplication

ApplicationContext context =SpringApplication.run(SpringIocDemoApplication.class, args);

从Spring中获取UserService对象

管理的方法名 对象名 = context.getBean();

当@Bean定义多个对象时,用

管理的方法名 对象名 =(管理的方法名) context.getBean(管理的方法);

重命名 Bean:@Bean(name = {" "})

@ComponentScan配置扫描路径({" "})------一般不用设置,都包含在@SpringBootApplication中,一般把@SpringBootApplication放在我们希望扫描的包的路径下, 这样我们定义的bean就都可以被扫描到

DI

容器在运行期间, 动态的为应⽤程序提供运行时所依赖的资源,称之为依赖注⼊

注入分为三种

1.属性注⼊(Field Injection)

使⽤ @Autowired(把对象取出来放到某个类的属性中)

类型注入(只能⽤于 IoC 容器,如果是非 IoC 容器不可用,不能注入Final修饰的属性)

2.构造⽅法注⼊(Constructor Injection)

在要注入参数的构造方法上面加上@Autowired

如果类只有⼀个构造方法,那么 @Autowired 注解可以省略;如果类中有多个构造方法,

那么需要添加上 @Autowired 来明确指定到底使用哪个构造⽅法

(可以注⼊final修饰的属性,注⼊的对象不会被修改)

3.Setter 注入(Setter Injection)

Setter方法是"set" 开头,后跟属性名(首字母大写)

(不能注⼊⼀个Final修饰的属性)

@Primary:当存在多个相同类型的Bean注入时,加上@Primary注解,来确定默认的实现

@Qualifier:指定当前要注⼊的bean对象,在@Qualifier的value属性中,指定注⼊的bean的名称------@Qualifier(" ")

@Resource:是按照bean的名称进行注入。通过name属性指定要注入的bean的名称

@Resource(name = " ")

四.SpringBoot配置(#"来添加注释)

配置文件配置

roperties配置

properties 是以键值的形式配置的,key 和 value 之间是以"="连接的

properties读取配置@Value("${key}")

yml 配置

key: value(冒号后有一个空格不能省略)

配置不同数据类型:类型.yml常量名=

内容配置

配置字符串时

单引号会转义特殊字符,使其失去特殊功能, 始终是⼀个普通的字符串

双引号不会转义字符串⾥⾯的特殊字符, 特殊字符会表示本⾝的含义

配置为空时:null.value: ~ 空字符串:empty.value: ''

yml读取配置@Value("${ }")

配置对象

当许多常量属于同一个常量时,可以用大括号包含那几个常量

同一个常量名: {key: value}

@ConfigurationProperties:读取yml里的某个类型中的多个元素

此时要用@ConfigurationProperties(prefix ="同一个常量名")来读取

配置集合

用相同常量名不同内容用-来给赋值

用@ConfigurationProperties(prefix ="同一个常量名")来读取

配置Map

可以用对象的形式同一个常量名: {key: {key: value}}

用@ConfigurationProperties(prefix ="同一个常量名")来读取

五.SpringBoot日志(可以使用lombok调用)

使用日志框架 Slf4j------Logger 对象是属于 org.slf4j 包下的

打印日志:private static Logger logger = LoggerFactory.getLogger(类名.class)

日志的级别从⾼到低依次为: FATAL、ERROR、WARN、INFO、DEBUG、TRACE

1.日志分类

FATAL: 致命信息,表示需要立即被处理的系统级错误

ERROR: 错误信息, 级别较⾼的错误日志信息, 但仍然不影响系统的继续运行

WARN: 警告信息, 不影响使用, 但需要注意的问题

INFO: 普通信息, 用于记录应用程序正常运行时的⼀些信息, 例如系统启动完成、请求处理完成等

DEBUG: 调试信息, 需要调试时候的关键信息打印

TRACE: 追踪信息, 比DEBUG更细粒度的信息事件(除非有特殊用意,否则请使用DEBUG级别替代)

2. 配置日志级别

Properties配置
复制代码
logging.level.root=debug
yml配置
复制代码
logging:
  level:
  root: ⽇志的级别

3.日志持久化

1.logging.file.name:设置日志的路径和文件名

Properties配置
复制代码
logging.file.name=存储位置/存储名称.log
yml配置
复制代码
logging:
  file:
  name: 存储位置/存储名称.log

2.logging.file.path:设置存储日志的路径, 文件名为固定的spring.log

Properties配置
复制代码
logging.file.path=logging.file.path=存储位置
yml配置
复制代码
logging:
  file:
  path: 存储位置

4.日志文件分割

Properties配置
复制代码
logging.logback.rollingpolicy.file-name-pattern=
${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz(默认日志分割后的文件名格式)

logging.logback.rollingpolicy.max-file-size=分割大小
(日志文件超过这个⼤⼩就⾃动分割)
yml配置
复制代码
logging:
  logback:
  rollingpolicy:
  max-file-size: 分割大小
  file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
相关推荐
Hx_Ma161 小时前
BCrypt
java
We....1 小时前
鸿蒙与Java跨平台Socket通信实战
java·服务器·tcp/ip·arkts·鸿蒙
笃行客从不躺平1 小时前
Token 复习
java·分布式·spring cloud
Albert Edison2 小时前
【Python】函数
java·linux·python·pip
2301_818732062 小时前
项目启动报错,错误指向xml 已解决
xml·java·数据库·后端·springboot
码农阿豪2 小时前
Oracle 到金仓数据库迁移实战:一次真正“落地”的国产替代之旅
java·数据库·oracle
小王不爱笑1323 小时前
SpringBoot 整合 Ollama + 本地 DeepSeek 模型
java·spring boot·后端
毕设源码-钟学长3 小时前
【开题答辩全过程】以 高校宿舍分配系统设计与实现为例,包含答辩的问题和答案
java
何中应3 小时前
IDEA 中让 Git 忽略 .idea 目录
java·git·intellij-idea