Java springboot里注解大全和使用指南(最新整理)
在 Java Spring Boot 中,注解是簡(jiǎn)化開發(fā)、提高效率的關(guān)鍵工具。以下是一些核心注解及其使用指南,按功能分類整理:
一、核心啟動(dòng)與配置注解
- @SpringBootApplication
- 作用:Spring Boot 應(yīng)用的核心注解,用于標(biāo)記主啟動(dòng)類。它是一個(gè)組合注解,等價(jià)于同時(shí)使用
@Configuration、@EnableAutoConfiguration和@ComponentScan。 - 使用場(chǎng)景:必須添加在 Spring Boot 應(yīng)用的主啟動(dòng)類上,是應(yīng)用啟動(dòng)的必要條件。
- 作用:Spring Boot 應(yīng)用的核心注解,用于標(biāo)記主啟動(dòng)類。它是一個(gè)組合注解,等價(jià)于同時(shí)使用
- 示例:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@Configuration
- 作用:聲明當(dāng)前類是一個(gè)配置類,相當(dāng)于 Spring 的 XML 配置文件。
- 使用場(chǎng)景:用于定義和配置 Bean,通常配合
@Bean注解一起使用。 - 示例:
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
// 配置并返回一個(gè)數(shù)據(jù)源 Bean
return new HikariDataSource();
}
}
- @EnableAutoConfiguration
- 作用:?jiǎn)⒂?Spring Boot 的自動(dòng)配置機(jī)制,根據(jù)類路徑和配置文件中的信息自動(dòng)配置 Spring 應(yīng)用。
- 使用場(chǎng)景:通常與
@SpringBootApplication一起使用,無(wú)需單獨(dú)使用。
- @ComponentScan
- 作用:自動(dòng)掃描指定包及其子包下的組件(如
@Component、@Service、@Repository、@Controller等),并將它們注冊(cè)為 Spring Bean。 - 使用場(chǎng)景:通常與
@SpringBootApplication一起使用,無(wú)需單獨(dú)使用。若需自定義組件掃描范圍,可通過(guò)basePackages屬性指定。
- 作用:自動(dòng)掃描指定包及其子包下的組件(如
- 示例:
@SpringBootApplication(scanBasePackages = "com.example.demo")
public class DemoApplication {
// ...
}
二、組件注冊(cè)注解
- @Component
- 作用:通用的組件注解,用于標(biāo)記任何類為 Spring 的組件。Spring 會(huì)自動(dòng)掃描并創(chuàng)建該類的實(shí)例。
- 使用場(chǎng)景:當(dāng)組件不屬于
Controller、Service、Repository等特定層級(jí)時(shí)使用。
- 示例:
@Component
public class ToolUtil {
public String formatStr(String str) {
return str.trim().toUpperCase();
}
}
@Service
- 作用:標(biāo)記業(yè)務(wù)邏輯層(Service 層)的組件,是
@Component的特化版本,語(yǔ)義更加明確。 - 使用場(chǎng)景:用于封裝核心業(yè)務(wù)邏輯。
- 示例:
@Service
public class UserService {
public User getUserById(Integer id) {
// 實(shí)際場(chǎng)景中會(huì)調(diào)用 Repository 層查詢數(shù)據(jù)庫(kù)
User user = new User();
user.setId(id);
user.setName("李四");
return user;
}
}
@Repository
- 作用:標(biāo)記數(shù)據(jù)訪問(wèn)層(DAO 層)的組件,是
@Component的特化版本。除了將類注冊(cè)為 Bean 外,它還額外提供了持久化異常轉(zhuǎn)換的功能。 - 使用場(chǎng)景:用于封裝數(shù)據(jù)訪問(wèn)邏輯,與數(shù)據(jù)庫(kù)交互。
- 示例:
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
User findByName(String name);
}
@Controller
- 作用:標(biāo)記控制層組件,用于接收 HTTP 請(qǐng)求并返回視圖或數(shù)據(jù)。
- 使用場(chǎng)景:Web 層控制器類,處理用戶請(qǐng)求(如頁(yè)面跳轉(zhuǎn)、表單提交等)。
- 示例:
@Controller
@RequestMapping("/user")
public class UserController {
@GetMapping("/info")
public String userInfo(Model model) {
model.addAttribute("username", "張三");
return "user-info"; // 返回視圖名
}
}
@RestController
- 作用:組合注解,相當(dāng)于
@Controller+@ResponseBody。用于構(gòu)建 RESTful API,返回 JSON/XML 等數(shù)據(jù)格式,而非視圖。 - 使用場(chǎng)景:前后端分離項(xiàng)目的接口層,提供 RESTful API(如移動(dòng)端接口、前端 AJAX 請(qǐng)求接口)。
- 示例:
@RestController
@RequestMapping("/api/user")
public class UserRestController {
@GetMapping("/info")
public User getUserInfo() {
User user = new User();
user.setId(1);
user.setName("張三");
return user; // 直接返回 User 對(duì)象,會(huì)自動(dòng)轉(zhuǎn)為 JSON
}
}
三、依賴注入注解
- @Autowired
- 作用:自動(dòng)注入依賴的 Bean,Spring 會(huì)在 IoC 容器中查找匹配類型的 Bean 并注入到目標(biāo)字段、構(gòu)造方法或 setter 方法中。
- 使用場(chǎng)景:需要注入其他 Bean 依賴時(shí)(如 Service 層注入 Repository 層、Controller 層注入 Service 層)。
- 示例:
@RestController
public class UserRestController {
private final UserService userService;
@Autowired
public UserRestController(UserService userService) {
this.userService = userService;
}
@GetMapping("/info")
public User getUserInfo() {
return userService.getUserById(1);
}
}@Qualifier
- 作用:與
@Autowired一起使用,用于指定要注入的 Bean 的名稱。當(dāng)存在多個(gè)相同類型的 Bean 時(shí),可以使用@Qualifier來(lái)指定注入哪一個(gè)。 - 使用場(chǎng)景:解決相同類型 Bean 的歧義性注入問(wèn)題。
- 示例:
@RestController
public class UserRestController {
private final UserService userService;
@Autowired
@Qualifier("userServiceImpl") // 指定注入的 Bean 名稱
public UserRestController(UserService userService) {
this.userService = userService;
}
// ...
}@Value
- 作用:注入配置文件中的值,可以注入
String、int、long、double、boolean等類型。 - 使用場(chǎng)景:從配置文件中讀取配置值并注入到 Bean 的屬性中。
- 示例:
@Component
public class AppConfig {
@Value("${server.port}")
private int port;
// ...
}
四、Web 開發(fā)注解
- @RequestMapping
- 作用:映射 HTTP 請(qǐng)求到處理方法,可以用于類和方法上。用于指定請(qǐng)求 URL 和 HTTP 方法(GET、POST、PUT、DELETE 等)。
- 使用場(chǎng)景:處理 Web 請(qǐng)求,將請(qǐng)求映射到具體的處理方法上。
- 示例:
@RestController
@RequestMapping("/api/user")
public class UserRestController {
@GetMapping("/info")
public User getUserInfo() {
// ...
}
@PostMapping("/create")
public User createUser(@RequestBody User user) {
// ...
}
}@GetMapping、@PostMapping、@PutMapping、@DeleteMapping
- 作用:分別用于映射 HTTP GET、POST、PUT、DELETE 請(qǐng)求到處理方法上。它們是
@RequestMapping的特化,分別對(duì)應(yīng)不同的 HTTP 請(qǐng)求方法。 - 使用場(chǎng)景:簡(jiǎn)化 RESTful API 的開發(fā),直接對(duì)應(yīng) HTTP 方法。
- 示例:
@RestController
@RequestMapping("/api/user")
public class UserRestController {
@GetMapping("/info")
public User getUserInfo() {
// ...
}
@PostMapping("/create")
public User createUser(@RequestBody User user) {
// ...
}
}@RequestParam
- 作用:用于將請(qǐng)求參數(shù)綁定到 Controller 方法的參數(shù)上。
- 使用場(chǎng)景:獲取 URL 查詢參數(shù)或表單提交的參數(shù)。
- 示例:
@GetMapping("/search")
public List<User> searchUsers(@RequestParam String name, @RequestParam(defaultValue = "10") int size) {
// ...
}
@PathVariable
- 作用:用于獲取請(qǐng)求路徑中的參數(shù),通常用于 RESTful 風(fēng)格的 API 上。
- 使用場(chǎng)景:從 URL 路徑中提取參數(shù)值。
- 示例:
@GetMapping("/user/{id}")
public User getUserById(@PathVariable Long id) {
// ...
}
@RequestBody
- 作用:用于接收請(qǐng)求體中的 JSON 數(shù)據(jù),并將其綁定到 Controller 方法的參數(shù)上。
- 使用場(chǎng)景:處理 POST、PUT 等請(qǐng)求中的 JSON 數(shù)據(jù)。
- 示例:
@PostMapping("/create")
public User createUser(@RequestBody User user) {
// ...
}
@ResponseBody
- 作用:表示該方法的返回結(jié)果直接寫入 HTTP 響應(yīng)體中,返回?cái)?shù)據(jù)的格式為
application/json。通常與@Controller一起使用,若使用@RestController則無(wú)需使用此注解。 - 使用場(chǎng)景:返回 JSON/XML 等數(shù)據(jù)格式,而非視圖。
- 示例:
@Controller
public class UserController {
@GetMapping("/info")
@ResponseBody
public User getUserInfo() {
User user = new User();
user.setId(1);
user.setName("張三");
return user;
}
}到此這篇關(guān)于Java springboot里注解大全和使用指南(最新整理)的文章就介紹到這了,更多相關(guān) springboot注解使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot?中處理接口傳參時(shí)常用的注解及使用場(chǎng)景分析
- Java SpringBoot自定義注解的使用及說(shuō)明
- SpringBoot整合Jasypt使用自定義注解+AOP實(shí)現(xiàn)敏感字段加解密
- SpringBoot中的條件注解使用示例詳解
- Spring Boot 注解 @SpringBootApplication的使用詳解
- SpringBoot條件注解核心作用與使用場(chǎng)景詳解
- SpringBoot項(xiàng)目使用@Scheduled注解實(shí)現(xiàn)定時(shí)任務(wù)的方法
- SpringBoot中的掃描注解使用詳解
- SpringBoot使用注解集成Redis緩存的示例代碼
相關(guān)文章
示例解析java重載Overloading與覆蓋Overriding
這篇文章主要介紹了java重載Overloading與覆蓋Overriding的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
Java如何獲取當(dāng)前進(jìn)程ID以及所有Java進(jìn)程的進(jìn)程ID
本篇文章主要介紹了Java如何獲取當(dāng)前進(jìn)程ID以及所有Java進(jìn)程的進(jìn)程ID,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Java網(wǎng)絡(luò)編程基礎(chǔ)用法詳解
網(wǎng)絡(luò)編程是指編寫運(yùn)行在多個(gè)設(shè)備(計(jì)算機(jī))的程序,這些設(shè)備都通過(guò)網(wǎng)絡(luò)連接起來(lái),本文將帶大家詳細(xì)了解Java的網(wǎng)絡(luò)編程,文中有相關(guān)的代碼示例,需要的朋友可以參考下2023-05-05
Mybatis使用@one和@Many實(shí)現(xiàn)一對(duì)一及一對(duì)多關(guān)聯(lián)查詢
本文主要介紹了Mybatis使用@one和@Many實(shí)現(xiàn)一對(duì)一及一對(duì)多關(guān)聯(lián)查詢,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
java實(shí)現(xiàn)pdf文件截圖的方法【附PDFRenderer.jar下載】
這篇文章主要介紹了java實(shí)現(xiàn)pdf文件截圖的方法,結(jié)合實(shí)例形式分析了java基于PDFRenderer.jar進(jìn)行pdf文件截圖的相關(guān)操作技巧,并附帶PDFRenderer.jar文件供讀者下載使用,需要的朋友可以參考下2018-01-01
SpringBoot實(shí)現(xiàn)驗(yàn)證碼的案例分享
驗(yàn)證碼可以有效防止其他人對(duì)某一個(gè)特定的注冊(cè)用戶用特定的程序,破解方式進(jìn)行不斷的登錄嘗試,我們其實(shí)很經(jīng)??吹?登錄一些網(wǎng)站其實(shí)是需要驗(yàn)證碼的,所以本文給大家分享了SpringBoot實(shí)現(xiàn)驗(yàn)證碼的案例,需要的朋友可以參考下2024-11-11

