@RequiredArgsConstructor 注解
- 类上添加该注解,
Lombok
会自动生成一个构造函数,用于注入final
或@NonNull
修饰的字段
@ConfigurationProperties注解
- 用于将配置文件中的属性注入到某个类的字段上
sky:jwt:admin-secret-key: itcastadmin-ttl: 7200000admin-token-name: token
@ConfigurationProperties(prefix = "sky.jwt")
public class JwtProperties {/*** 管理端员工生成jwt令牌相关配置*/private String adminSecretKey;private long adminTtl;private String adminTokenName;
}
注意:配置文件中使用横线而不是下划线 , 如果使用下划线(如 admin_secret_key
), Spring Boot
无法直接将其映射为 adminSecretKey
,需要自定义映射规则.
@ConditionalOnMissingBean注解
用来防止重复注册: 当容器中已存在某个类型的Bean
时,使用此注解可以避免再次注册相同类型的 Bean
,防止Bean
重复定义导致的异常。
示例:
@Configuration
public class MyServiceConfig {@Bean@ConditionalOnMissingBean(MyService.class)public MyService defaultMyService() {return new DefaultMyServiceImpl();}
}
defaultMyService
方法仅在容器中不存在 MyService
类型的 Bean
时才会被调用,确保容器中只有一个MyService
实例。
@RequestHeader注解
用于从请求头中获取指定的头部字段。直接绑定请求头中的某个参数到方法的参数上。
例如:
@RequestMapping("/header")
public String getHeader(@RequestHeader("User-Agent") String userAgent) {return "User-Agent: " + userAgent;
}
当发送请求时,User-Agent
头部的信息会映射到 userAgent
参数里。
@value注解
主要作用: 从配置文件中注入值
基本使用
- 配置文件:
server:port: 8080
- 注入:
@Value("${server.port}")
private String serverPort;
其他用法
如果 config.name
配置项 不存在,则使用 默认值:
@Value("${config.name:默认值}")
private String configName;
可以用逗号分隔方式读取数组:
config.names=张三,李四,王五
@Value("#{'${config.names}'.split(',')}")
private List<String> names;
🔹 这样 names
变量的值就是 ["张三", "李四", "王五"]
。
读取操作系统的环境变量 或 Java
系统属性:
@Value("${JAVA_HOME}")
private String javaHome;
@Pathvariable注解:
-
@pathvariable
:用于指定路径参数,不带问号的,比如category/1
这种形式. -
下面的url中,id直接以
键值对
形式跟在?
后,明确地说明了这就是id
的值,不用加@pathvariable
注解.
http://localhost:8080/category?id=12345
如果路径参数和方法参数名一致,可以省略括号中的内容:
@PathVariable("id") Long id
@RequestParam注解:
假设请求: http://localhost:8080/greet?name=John
,则参数 name
会被赋值为 "John"
:
@GetMapping("/greet")
public String greet(@RequestParam String name) {return "Hello, " + name;
}
@Service注解
该注解应该标注在 实现类上,而不是接口上。