文章摘要: 摘要内容。
默认注解
- 若没有指定
@ComponentScan扫描包路径,则自动扫描当前配置类所在的包。
启动/引导类
@SpringBootApplication
说明
- 标记为SpringBoot引导/启动类。
参数
- 无
案例
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
}
}
配置类
@SpringBootConfiguration
说明
- spring boot的配置类。
参数
- 无
案例
import org.springframework.boot.SpringBootConfiguration;
@SpringBootConfiguration
public @interface SpringBootApplication {
}
@EnableAutoConfiguration
说明
- 开启自动配置功能。
参数
- 无
案例
@EnableAutoConfiguration
public @interface SpringBootApplication {
}
@ComponentScan
说明
- 配置扫描包路径
参数
- ==待完善==
案例
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
}
注入(绑定)配置文件属性
@Value
说明
- 通过
@Value+ SpEL表达式 直接绑定SpringBoot中的配置- 在Java代码中使用
@Value("${agentInfo.realName}")实现读取配置文件中的数据。- 绑定(读取)单个配置文件上的属性。
案例
# yml配置文件
agent_data:
account: "CHN2024091700009999"
nick_name: "测试姬"
real_name: "云脉"
nationality: "CHN"
gender: 0
age: 23
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class AgentInfo {
@Value("${agent_data.real_name}")
private String realName; // 真实姓名
@Value("${agent_data.age}")
private String age; // 年龄
}
@ConfigurationProperties
说明
- 绑定配置文件上的数据与类属性。
- 读取配置文件数据。
- 绑定(读取)多个配置文件上的属性。
案例
# yml配置文件
agent_data:
account: "CHN2024091700009999"
nick_name: "测试姬"
real_name: "云脉"
nationality: "CHN"
gender: 0
age: 23
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.ConstructorBinding;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "agent_data") // 前缀,下的所有属性都将绑定到
@ConstructorBinding
public class AppProperties {
private String realName;
private int age;
// 获取真实姓名
public String getRealName() {
return realName;
}
// 获取年龄
public int getAge() {
return age;
}
}
@PropertySource
说明
- 指定配置文件位置。
- 指定 Spring 的
Environment中要包含的属性源的位置。
属性
value或location:用于指定属性文件的位置。可以使用 Spring 的资源路径,例如 “classpath:” 或 “file:”。ignoreResourceNotFound:如果设置为true,则在找不到指定的资源文件时不会抛出异常。encoding:指定属性文件的编码格式。factory:指定用于解析属性源的PropertySourceFactory。
案例
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Configuration
@PropertySource(value = {"classpath:custom.properties", "file:/path/to/external.properties"}, ignoreResourceNotFound = true)
public class AppConfig {
// ... 配置类的内容
}
// `AppConfig` 配置类通过 `@PropertySource` 注解指定了两个属性文件的位置:一个是位于类路径下的 `custom.properties`,另一个是位于文件系统中的 `/path/to/external.properties`。
数据校验
@Validated
说明
- JSR303数据校验
属性
- 无
案例
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.ConstructorBinding;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
@Component
@ConfigurationProperties(prefix = "agent_data") // 前缀,下的所有属性都将绑定到
@ConstructorBinding
@Validated // 数据校验
public class AppProperties {
private String realName;
private int age;
// 获取真实姓名
public String getRealName() {
return realName;
}
// 获取年龄
public int getAge() {
return age;
}
}
标记Bean对象
@RestController
说明
- 标记为controller层的bean对象
案例
import org.springframework.web.bind.annotationl.RestController;
@RestController
public class UserController {
}
@SpringBootTest
说明
- 在类上定义,标记为测试类。
案例
// 指定spring boot的启动/引导类
@SpringBootTest(classes = app.class)
public class Test {
}
自动注入
@Autowired
说明
- 自动指定要注入的Bean对象。
参数
- 暂无
案例
import org.springframework.beans.factory.annotation.Autowired;
public class UserController {
@Autowired
private UserService userService; // 服务层对象
}
@Qualifier
说明
- 手动指定要注入的Bean对象。
参数
value:设置在容器中的Bean对象名
案例
import org.springframework.beans.factory.annotation.Qualifier;
public class UserController {
@Qualifier("userServiceImpl")
private UserService service; // 服务层对象
}
请求URL路径映射
@RequestMapping
说明
- 请求路径映射
案例
public class UserController {
// 接收,请求方式限制,可以不进行请求方法限制
@RequestMapping(value = "/users", method = RequestMethod.POST)
// 响应
@ResponseBody
public String save() {
return "返回响应";
}
}
REST风格的资源请求路径
@GetMapping:获取,仅支持get请求方式。@PostMapping:新增,仅支持post请求方式。@PutMapping:修改,仅支持put请求方式。@DeleteMapping:删除,仅支持delete请求方式。
@PathVariable:形参注解,绑定路径参数与处理器方式形参间的关系,要求路径参数名与形参名一致。
@GetMapping("user/{id}")
public void getById(@PathVariable Integer id) {
}
接收请求数据
@RequestBody
说明
- 用于接收json对象数据。普通风格。
@RequestParm
说明
- 用于接收URL地址或表单进行传递参数。若传递的不是json对象数据,则使用该方法。普通风格。
@PathVariable
说明
- 用于接收路径参数,使用
{参数名称}的格式描述路径参数。参数数量较少时使用REST风格,通常传递id值。
场景启动器中的注解
spring-boot-test
- 单元测试
- 实现对项目中的接口进行测试。
spring-boot-test场景启动器的注解总结:Library-Maven-SpringBoot3-场景启动器-test-注解