@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注解
該注解應該標注在 實現類上,而不是接口上。