01 Spring 纯注解配
1. 核心注解
表格
| | 注解 | 作用(原理级解释) | 等价 XML | |---------------------|--------------------------------------------------------------------------------------------------------------|-----------------------------------------------| | @Bean | 将当前方法的返回值对象交给 Spring IOC 容器管理,由 Spring 控制对象的创建、初始化、销毁和依赖注入。方法名默认作为 Bean 的 id。 | <bean id="" class=""/> | | @PropertySource | 加载外部 properties 配置文件,将配置文件中的键值对加载到 Spring 环境中,配合 @Value 注解读取配置。 | <context:property-placeholder location=""/> | | @ComponentScan | 开启 Spring 组件自动扫描,Spring 会自动扫描指定包及其子包下所有标注 @Controller/@Service/@Repository/@Component 的类,并将其纳入 IOC 容器管理。 | <context:component-scan base-package=""/> | | @Import | 导入其他配置类或组件类,将外部配置整合到当前配置中,实现模块化配置,让 Spring 加载多个配置源。 | <import resource="xxx.xml"/> | | @Configuration | 标记当前类为 Spring 配置类,替代传统 XML 配置文件。Spring 会将该类作为配置来源,自动解析其中的 Bean 定义和注解。 | applicationContext.xml | |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
value/name:指定 IOC 容器中 bean 的 key- 方法返回值:放入容器的实体对象
02 Spring Boot 入门
一、Spring Boot 介绍
- 本质 :Spring + SpringMVC 的快速开发脚手架
- 不是增强 Spring,而是简化 Spring 开发
- 三大特点
- 简化 XML(零配置)
- 简化 Maven(启动器)
- 内嵌 Tomcat(直接运行)
二、入门案例
1. pom.xml
xml
<!-- 1. 继承父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<!-- 2. web启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2. 启动类(最重要)
java
运行
package com.hg; // 必须是所有包的父包!
@SpringBootApplication // 启动类核心注解
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class);
}
}
✅ 规则:启动类必须放在 controller/service/mapper 的上级包
三、启动器 Starter
- 定义:依赖 + 配置类 的集合
- 命名规范
- 官方:
spring-boot-starter-模块名例:spring-boot-starter-web - 第三方:
模块名-spring-boot-starter例:mybatis-spring-boot-starter
- 官方:
四、配置文件
1. application.properties
properties
server.port=8090
server.servlet.context-path=/springboot
2. application.yml(推荐)
yml
server:
port: 8090
servlet:
context-path: /springboot
YML 语法规则
.变为:- 使用空格缩进
=变为: (空格)
五、两种打包发布方式
1)JAR 包(常用)
- 自带 Tomcat,直接运行
- 命令:
java -jar xxx.jar
2)WAR 包
- 需要外部 Tomcat
- 配置步骤
<packaging>war</packaging>- tomcat 依赖改为
provided - 启动类继承
SpringBootServletInitializer
03 Spring Boot 整合技术
一、全局异常处理器
前后端分离(重点)
java
运行
@ControllerAdvice // 全局异常切面
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class) // 捕获异常
@ResponseBody
public Map handleException(){
// 返回统一异常结果
}
}
二、整合 JUnit
java
运行
//@RunWith(SpringRunner.class)
//@SpringBootTest(classes = {SpringBootJunit.class})
@SpringBootTest // 直接用这个注解即可
public class Test{
@Autowired
private UserService userService;
}
三、多环境配置
-
配置文件命名规则
application-dev.yml(开发)application-test.yml(测试)application-prod.yml(生产)
-
激活环境
yml
spring: profiles: active: dev
四、整合 Logback
-
配置文件:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="Console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender>logback.xml</configuration><!-- 文件输出 --> <appender name="File" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/spring-boot-demo.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/spring-boot-demo-%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- 根日志级别 --> <root level="INFO"> <appender-ref ref="Console"/> <appender-ref ref="File"/> </root>
| 输出类型 | 配置位置 | 实际存放位置 | 说明 |
|---|---|---|---|
| 控制台输出 | <appender name="Console"> |
IDEA 控制台 | 程序运行时实时显示日志,方便调试 |
| 文件输出 | <file>logs/spring-boot-demo.log</file> |
项目根目录 /logs/ | 日志永久保存到文件,按天分割 |
| 历史日志 | <fileNamePattern> |
项目根目录 /logs/ | 按日期生成历史日志文件 |
| 保留时间 | <maxHistory>30</maxHistory> |
--- | 自动删除 30 天前的日志 |