SpringBoot最常用的50個注解總結(jié)(全是干貨!)
? SpringBoot提供了很多注解,可以幫助我們快速構(gòu)建應(yīng)用程序。以下是SpringBoot最常用的50個注解:
(1)@SpringBootApplication
作用:這是一個組合注解,包括了@Configuration、@EnableAutoConfiguration和@ComponentScan三個注解。用于標識SpringBoot應(yīng)用程序的入口類。
@Configuration:指示這個類是一個配置類,它定義了一個或多個@Bean方法,用于創(chuàng)建和配置Spring應(yīng)用程序上下文中的Bean。
@EnableAutoConfiguration:啟用Spring Boot的自動配置機制,它會自動添加所需的依賴項和配置,以使應(yīng)用程序能夠運行。
@ComponentScan:指示Spring Boot掃描當前包及其子包中的所有@Component、@Service、@Repository和@Controller注解的類,并將它們注冊為Spring Bean。
@SpringBootApplication注解通常被用于Spring Boot應(yīng)用程序的入口類上,用于啟動Spring Boot應(yīng)用程序。它可以簡化Spring應(yīng)用程序的配置和啟動過程。
用例:
@SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
(2)@RestController
作用:與@Controller類似,但是@RestController會自動將返回值轉(zhuǎn)換為JSON格式。
@RestController是Spring Framework 4.0版本引入的一個注解,它是@Controller和@ResponseBody的組合注解。它用于標注一個類,表示這個類是一個RESTful風格的控制器,可以處理HTTP請求并返回JSON/XML格式的響應(yīng)。
@RestController注解用于替代原來的@Controller注解,它默認情況下會將控制器方法的返回值轉(zhuǎn)換為JSON格式,并以HTTP響應(yīng)的方式返回給客戶端。如果需要返回XML格式的響應(yīng),可以使用其他注解,如@Produces和@Consumes。
用例:
@RestController public class HelloController { @GetMapping("/hello") public String hello() { return "Hello, World!"; } }
(3)@RequestMapping
作用:用于映射請求URL和處理方法。@RequestMapping是Spring MVC框架中的一個核心注解,它用于映射HTTP請求和控制器方法之間的關(guān)系。它可以用于類級別和方法級別,用于指定請求URL和HTTP方法(GET、POST、PUT、DELETE等)。
用例:
@RestController @RequestMapping("/api") public class UserController { @GetMapping("/users") public List<User> getUsers() { // 獲取用戶列表 } @PostMapping("/users") public void createUser(@RequestBody User user) { // 創(chuàng)建新用戶 } @GetMapping("/users/{id}") public User getUserById(@PathVariable Long id) { // 根據(jù)ID獲取用戶信息 } @PutMapping("/users/{id}") public void updateUser(@PathVariable Long id, @RequestBody User user) { // 更新用戶信息 } @DeleteMapping("/users/{id}") public void deleteUser(@PathVariable Long id) { // 根據(jù)ID刪除用戶 } }
(4)@GetMapping
作用:用于映射HTTP GET請求。
用例:
@RestController @RequestMapping("/api") public class UserController { @GetMapping("/users") public List<User> getUsers() { // 獲取用戶列表 } @GetMapping("/users/{id}") public User getUserById(@PathVariable Long id) { // 根據(jù)ID獲取用戶信息 } }
(5)@PostMapping
作用:用于映射HTTP POST請求。
用例:
@RestController @RequestMapping("/api") public class UserController { @PostMapping("/users") public void createUser(@RequestBody User user) { // 創(chuàng)建新用戶 } }
(6)@PutMapping
作用:用于映射HTTP PUT請求。
用例:
@RestController @RequestMapping("/api") public class UserController { @PutMapping("/users/{id}") public void updateUser(@PathVariable Long id, @RequestBody User user) { // 更新用戶信息 } }
(7)@DeleteMapping
作用:用于映射HTTP DELETE請求。
用例:
@RestController @RequestMapping("/api") public class UserController { @DeleteMapping("/users/{id}") public void deleteUser(@PathVariable Long id) { // 根據(jù)ID刪除用戶 } }
(8)@RequestParam
作用:用于獲取請求參數(shù)的值。
用例:
@RestController @RequestMapping("/api") public class UserController { @GetMapping("/users") public List<User> getUsers(@RequestParam("page") int page, @RequestParam("size") int size) { // 分頁獲取用戶列表 } }
(9)@PathVariable
作用:用于獲取URL中的參數(shù)值。@PathVariable是Spring MVC框架中的一個注解,用于將HTTP請求路徑中的變量綁定到控制器方法的參數(shù)上。
用例:
@RestController @RequestMapping("/api") public class UserController { @GetMapping("/users/{id}") public User getUser(@PathVariable Long id) { // 根據(jù)ID獲取用戶信息 } }
(10)@RequestBody
作用:用于將HTTP請求的主體轉(zhuǎn)換為方法的參數(shù)。@RequestBody是Spring MVC框架中的一個注解,用于將HTTP請求體中的數(shù)據(jù)綁定到控制器方法的參數(shù)上。
用例:
@RestController @RequestMapping("/api") public class UserController { @PostMapping("/users") public User createUser(@RequestBody User user) { // 創(chuàng)建用戶 } }
(11)@ResponseBody
作用:用于將方法的返回值轉(zhuǎn)換為HTTP響應(yīng)的主體。@ResponseBody是Spring MVC框架中的一個注解,用于將控制器方法的返回值轉(zhuǎn)換為HTTP響應(yīng)體中的數(shù)據(jù)。
用例:
@RestController public class UserController { @GetMapping("/users/{id}") @ResponseBody public User getUser(@PathVariable int id) { // 從數(shù)據(jù)庫或其他地方獲取用戶數(shù)據(jù) User user = userService.getUserById(id); return user; } }
(12)@Autowired
作用:用于自動裝配Spring容器中的Bean。
用例:
@Service public class UserServiceImpl implements UserService { @Autowired private UserRepository userRepository; // 實現(xiàn)UserService接口中的方法 }
(13)@Component
作用:用于標識一個類是Spring容器中的組件。@Component是Spring框架中的一個通用注解,用于標注一個類作為Spring Bean。
用例:
@Component public class UserServiceImpl implements UserService { // 實現(xiàn)UserService接口中的方法 }
(14)@Service
作用:用于標識一個類是Spring容器中的服務(wù)組件。@Service是Spring框架中的一個注解,用于標注一個類作為服務(wù)類(Service)。
用例:
@Service public class UserServiceImpl implements UserService { // 實現(xiàn)UserService接口中的方法 }
(15)@Repository
作用:用于標識一個類是Spring容器中的數(shù)據(jù)訪問組件。@Repository是Spring框架中的一個注解,用于標注一個類作為數(shù)據(jù)訪問對象(DAO)。
用例:
@Repository public class UserRepositoryImpl implements UserRepository { // 實現(xiàn)UserRepository接口中的方法 }
(16)@Configuration
作用:用于標識一個類是Spring的配置類。@Configuration是Spring框架中的一個注解,用于標注一個類作為配置類。
用例:
@Configuration public class AppConfig { @Bean public UserService userService() { return new UserServiceImpl(); } @Bean public UserRepository userRepository() { return new UserRepositoryImpl(); } }
(17)@Value
作用:用于獲取配置文件中的屬性值。@Value是Spring框架中的一個注解,用于將配置文件中的屬性值注入到Bean對象中。
用例:
@Component public class MyComponent { @Value("${my.property}") private String myProperty; // 其他方法 } 這個類使用@Component注解標注,表示這個類是一個Spring Bean,可以被其他的Spring Bean自動裝配。 在屬性級別上,@Value注解指定了需要注入的屬性值,這個屬性值可以通過${...}的方式引用配置文件中的屬性值。 在這個例子中,MyComponent類中的myProperty屬性使用@Value注解指定了需要注入的屬性值,Spring會自動將配置文件中名為my.property的屬性值注入到這個屬性中。 @Value注解用于注入配置文件中的屬性值,使得開發(fā)者可以方便地從配置文件中獲取屬性值,并將其注入到Bean對象中。同時,使用@Value注解還可以方便地處理不同環(huán)境下的配置文件,如開發(fā)環(huán)境和生產(chǎn)環(huán)境的配置文件。 @Value注解是Spring框架中比較常用的注解之一,可以讓開發(fā)者更加專注于業(yè)務(wù)邏輯的實現(xiàn),而不必關(guān)心屬性值的獲取和注入細節(jié)。
(18)@Bean
作用:用于將一個方法返回的對象注冊到Spring容器中。@Bean是Spring框架中的一個注解,用于將一個方法返回的對象注冊為一個Spring Bean。
用例:
@Configuration public class AppConfig { @Bean public UserService userService() { return new UserServiceImpl(); } @Bean public UserRepository userRepository() { return new UserRepositoryImpl(); } }
(19)@Import
作用:用于導入其他配置類或Bean。
用例:
@Configuration @Import({AppConfig1.class, AppConfig2.class}) public class AppConfig { // 其他方法 }
(20)@Conditional
作用:用于根據(jù)條件判斷是否創(chuàng)建Bean或執(zhí)行配置。
用例:
@Configuration public class AppConfig { @Bean @Conditional(DatabaseTypeCondition.class) public UserRepository userRepository() { return new UserRepositoryImpl(); } // 其他方法 }
(21)@Profile
作用:用于指定配置的環(huán)境,如開發(fā)環(huán)境、測試環(huán)境或生產(chǎn)環(huán)境。
用例:
@Configuration public class AppConfig { @Bean @Profile("dev") public UserService userServiceDev() { return new UserServiceDevImpl(); } @Bean @Profile("prod") public UserService userServiceProd() { return new UserServiceProdImpl(); } // 其他方法 }
(22)@PropertySource
作用:用于指定配置文件的位置。@PropertySource是Spring框架中的一個注解,用于指定一組屬性文件的位置,從而可以在Spring應(yīng)用程序中使用這些屬性。
用例:
@Configuration @PropertySource("classpath:application.properties") public class AppConfig { @Autowired private Environment environment; @Bean public UserService userService() { return new UserServiceImpl(environment.getProperty("userService.name")); } // 其他方法 } 這個類使用@Configuration注解標注,表示這個類是一個配置類,用于配置應(yīng)用程序的Bean對象。 在類級別上,使用@PropertySource注解可以指定一個屬性文件的位置。在這個例子中,使用@PropertySource注解指定了一個名為application.properties的屬性文件,它位于classpath下。 在方法級別上,使用@Bean注解標注方法,表示這個方法返回一個Bean對象。在這個例子中,使用Environment對象從屬性文件中讀取屬性值,并將這些屬性值傳遞給UserService實例的構(gòu)造方法。 @PropertySource注解用于指定一組屬性文件的位置,使得開發(fā)者可以在Spring應(yīng)用程序中使用這些屬性。同時,使用Environment對象可以方便地讀取屬性文件中的屬性值,并將這些屬性值傳遞給Bean對象的構(gòu)造方法或?qū)傩浴? @PropertySource注解是Spring框架中比較常用的注解之一,可以讓開發(fā)者更加靈活地管理和配置Spring Bean。
(23)@Qualifier
作用:用于指定注入的Bean的名稱。
用例:
@Component public class UserServiceImpl implements UserService { @Autowired @Qualifier("userRepositoryImpl") private UserRepository userRepository; // 其他方法 }
(24)@ExceptionHandler
作用:用于處理異常。
用例:
@ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ModelAndView handleException(Exception ex) { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("errorMessage", ex.getMessage()); modelAndView.setViewName("error"); return modelAndView; } } 這個類使用@ControllerAdvice注解標注,表示這個類是一個全局異常處理器。在方法級別上,使用@ExceptionHandler注解可以指定一個方法來處理控制器中拋出的異常。 在這個例子中,使用@ExceptionHandler注解指定了一個名為handleException的方法,它處理所有類型的異常。當控制器中拋出異常時,會調(diào)用這個方法,并將異常對象作為參數(shù)傳遞給這個方法。 在這個方法中,使用ModelAndView對象來封裝錯誤信息,并將視圖名稱設(shè)置為error。最后,返回這個ModelAndView對象,將錯誤信息顯示到用戶界面上。 @ExceptionHandler注解用于處理控制器中拋出的異常,使得開發(fā)者可以根據(jù)需要靈活地處理異常。同時,使用@ControllerAdvice注解可以將這個異常處理器應(yīng)用于所有的控制器中。 @ExceptionHandler注解是Spring框架中比較常用的注解之一,可以讓開發(fā)者更加靈活地處理控制器中的異常。
(25)@ResponseStatus
作用:用于指定異常的HTTP響應(yīng)狀態(tài)碼。
用例:
@Controller public class UserController { @GetMapping("/user/{id}") @ResponseBody @ResponseStatus(HttpStatus.OK) public UserDetails getUserDetails(@PathVariable("id") Long id) { // 查詢用戶信息 UserDetails userDetails = userService.getUserDetails(id); if (userDetails == null) { throw new UserNotFoundException("User not found"); } return userDetails; } @ExceptionHandler(UserNotFoundException.class) @ResponseStatus(HttpStatus.NOT_FOUND) @ResponseBody public String handleUserNotFoundException(UserNotFoundException ex) { return ex.getMessage(); } }
(26)@ControllerAdvice
作用:用于全局處理異常。
@ControllerAdvice是Spring框架中的一個注解,用于定義全局控制器通知。
在Spring MVC框架中,控制器通知是一些特殊的組件,它們可以在控制器方法執(zhí)行前、執(zhí)行后或拋出異常時執(zhí)行一些額外的邏輯處理。使用@ControllerAdvice注解可以定義全局控制器通知,它可以應(yīng)用于所有的控制器。
用例:
@ControllerAdvice public class GlobalControllerAdvice { @ModelAttribute("currentUser") public User getCurrentUser() { // 獲取當前登錄用戶信息 User currentUser = userService.getCurrentUser(); return currentUser; } @InitBinder public void initBinder(WebDataBinder binder) { // 注冊自定義的屬性編輯器 binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); } @ExceptionHandler(Exception.class) public ModelAndView handleException(Exception ex) { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("errorMessage", ex.getMessage()); modelAndView.setViewName("error"); return modelAndView; } } 這個類使用@ControllerAdvice注解標注,表示這個類是一個全局控制器通知。在方法級別上,使用@ModelAttribute注解標注方法,表示這個方法會在所有控制器方法執(zhí)行前執(zhí)行,用于將當前登錄用戶信息添加到模型中。 使用@InitBinder注解標注方法,表示這個方法會在所有控制器方法執(zhí)行前執(zhí)行,用于注冊自定義的屬性編輯器。 使用@ExceptionHandler注解標注方法,表示這個方法會在控制器中拋出異常時執(zhí)行,用于處理控制器方法中拋出的異常。 @ControllerAdvice注解用于定義全局控制器通知,使得開發(fā)者可以在所有控制器方法執(zhí)行前、執(zhí)行后或拋出異常時執(zhí)行一些額外的邏輯處理。同時,使用@ModelAttribute注解可以將一些公共的模型數(shù)據(jù)添加到模型中,使用@InitBinder注解可以注冊自定義的屬性編輯器,使用@ExceptionHandler注解可以處理控制器方法中拋出的異常。 @ControllerAdvice注解是Spring框架中比較常用的注解之一,可以讓開發(fā)者更加靈活地定義全局控制器通知。
(27)@CrossOrigin
作用:用于解決跨域問題。
@CrossOrigin是Spring框架中的一個注解,用于解決跨域資源共享(CORS)問題。
跨域資源共享是瀏覽器安全策略的一部分,它限制了瀏覽器在不同域名之間發(fā)送和接收HTTP請求。使用@CrossOrigin注解可以指定允許跨域訪問的域名和HTTP方法。
用例:
@RestController @RequestMapping("/api") @CrossOrigin(origins = "http://localhost:8080", methods = {RequestMethod.GET, RequestMethod.POST}) public class ApiController { @GetMapping("/users") public List<User> getUsers() { // 查詢用戶信息 List<User> users = userService.getUsers(); return users; } } 這個類使用@RestController注解標注,表示這個類是一個RESTful風格的控制器。在類級別上,使用@RequestMapping注解指定控制器處理的請求路徑為/api。同時,使用@CrossOrigin注解可以指定允許跨域訪問的域名和HTTP方法。 在這個例子中,使用@CrossOrigin注解指定允許來自http://localhost:8080域名的GET和POST請求訪問該控制器中的方法。這意味著,在http://localhost:8080域名下的網(wǎng)頁可以通過XMLHttpRequest對象發(fā)送GET和POST請求,訪問該控制器中的方法。 @CrossOrigin注解用于解決跨域資源共享(CORS)問題,使得開發(fā)者可以更加靈活地控制允許跨域訪問的域名和HTTP方法。它是一種簡單但非常有效的解決方案,可以使得前端開發(fā)者更加輕松地開發(fā)跨域應(yīng)用程序。 @CrossOrigin注解是Spring框架中比較常用的注解之一,可以讓開發(fā)者更加靈活地解決跨域資源共享(CORS)問題。
(28)@Async
作用:用于將方法標記為異步執(zhí)行。
在Spring框架中,如果一個方法需要執(zhí)行一些比較耗時的操作,如果這個方法是在主線程中執(zhí)行,就會導致主線程被阻塞,用戶界面無法響應(yīng)用戶的操作。使用@Async注解可以將這個方法的執(zhí)行異步化,讓主線程繼續(xù)執(zhí)行其他任務(wù),提高應(yīng)用程序的響應(yīng)性能。
用例:
@Service public class UserService { @Async public CompletableFuture<UserDetails> getUserDetailsAsync(Long id) { // 查詢用戶信息 UserDetails userDetails = userRepository.getUserDetails(id); return CompletableFuture.completedFuture(userDetails); } } 這個類使用@Service注解標注,表示這個類是一個服務(wù)。在方法級別上,使用@Async注解標注方法,表示這個方法需要異步執(zhí)行。 在這個例子中,getUserDetailsAsync方法使用@Async注解標注,表示這個方法需要異步執(zhí)行。查詢用戶信息的操作在異步線程中執(zhí)行,不會阻塞主線程。同時,這個方法返回一個CompletableFuture對象,表示異步執(zhí)行的結(jié)果。 @Async注解用于異步執(zhí)行方法,可以提高應(yīng)用程序的響應(yīng)性能。它是一種簡單但非常有效的解決方案,可以使得開發(fā)者更加輕松地編寫并發(fā)應(yīng)用程序。 @Async注解是Spring框架中比較常用的注解之一,可以讓開發(fā)者更加靈活地異步執(zhí)行方法。需要注意的是,異步執(zhí)行的方法必須在一個獨立的線程中執(zhí)行,因此需要使用線程池來管理異步線程的執(zhí)行。
(29)@Cacheable
作用:用于緩存方法的返回值。
在Spring框架中,如果一個方法的返回結(jié)果是固定的,而且這個方法的執(zhí)行比較耗時,我們可以使用@Cacheable注解將這個方法的返回結(jié)果緩存起來,下次執(zhí)行這個方法時直接從緩存中獲取結(jié)果,避免重復執(zhí)行。
用例:
@Service public class UserService { @Cacheable("userCache") public User getUser(Long id) { // 查詢用戶信息 User user = userRepository.getUser(id); return user; } } 這個類使用@Service注解標注,表示這個類是一個服務(wù)。在方法級別上,使用@Cacheable注解標注方法,表示這個方法返回的結(jié)果可以被緩存起來。 在這個例子中,getUser方法使用@Cacheable注解標注,表示這個方法的返回結(jié)果可以被緩存起來。查詢用戶信息的操作在第一次執(zhí)行時會被執(zhí)行,返回結(jié)果會被緩存到名為"userCache"的緩存中。下次執(zhí)行g(shù)etUser方法時,如果緩存中已經(jīng)存在這個結(jié)果,就直接從緩存中獲取結(jié)果,不需要再次執(zhí)行查詢操作。 @Cacheable注解用于緩存方法的返回結(jié)果,可以提高應(yīng)用程序的執(zhí)行效率。它是一種簡單但非常有效的解決方案,可以使得開發(fā)者更加靈活地使用緩存來優(yōu)化應(yīng)用程序的性能。 @Cacheable注解是Spring框架中比較常用的注解之一,可以讓開發(fā)者更加輕松地使用緩存來提高應(yīng)用程序的性能。需要注意的是,使用緩存需要考慮緩存的生命周期和緩存的一致性,必要時需要使用緩存失效機制和緩存更新機制來維護緩存的一致性。
(30)@CacheEvict
作用:用于清除緩存。
@CacheEvict是Spring框架中的一個注解,用于清空緩存中的數(shù)據(jù)。
在Spring框架中,如果一個方法的執(zhí)行會導致緩存數(shù)據(jù)的失效,我們可以使用@CacheEvict注解將這個方法的緩存數(shù)據(jù)清空,這樣下次執(zhí)行這個方法時就會重新查詢數(shù)據(jù)并緩存起來。
用例:
@Service public class UserService { @Cacheable("userCache") public User getUser(Long id) { // 查詢用戶信息 User user = userRepository.getUser(id); return user; } @CacheEvict("userCache") public void clearCache() { // 清空緩存 } } 這個類使用@Service注解標注,表示這個類是一個服務(wù)。在方法級別上,使用@Cacheable注解標注getUser方法,表示這個方法的返回結(jié)果可以被緩存起來。同時,使用@CacheEvict注解標注clearCache方法,表示這個方法會清空名為"userCache"的緩存。 在這個例子中,getUser方法使用@Cacheable注解標注,表示這個方法的返回結(jié)果可以被緩存起來。查詢用戶信息的操作在第一次執(zhí)行時會被執(zhí)行,返回結(jié)果會被緩存到名為"userCache"的緩存中。下次執(zhí)行g(shù)etUser方法時,如果緩存中已經(jīng)存在這個結(jié)果,就直接從緩存中獲取結(jié)果,不需要再次執(zhí)行查詢操作。 當調(diào)用clearCache方法時,@CacheEvict注解會清空名為"userCache"的緩存,下次執(zhí)行g(shù)etUser方法時,就需要重新查詢數(shù)據(jù)并緩存起來。 @CacheEvict注解用于清空緩存中的數(shù)據(jù),可以使得開發(fā)者更加靈活地控制緩存的生命周期和緩存的一致性。它是一種簡單但非常有效的解決方案,可以使得開發(fā)者更加輕松地使用緩存來提高應(yīng)用程序的性能。 @CacheEvict注解是Spring框架中比較常用的注解之一,可以讓開發(fā)者更加靈活地控制緩存的生命周期和緩存的一致性。需要注意的是,清空緩存需要謹慎操作,必要時需要考慮緩存的失效機制和緩存更新機制來維護緩存的一致性。
(31)@CachePut
作用:用于更新緩存中的數(shù)據(jù)。
@CachePut是Spring框架中的一個注解,用于更新或添加緩存中的數(shù)據(jù)。
在Spring框架中,如果一個方法的執(zhí)行會導致緩存數(shù)據(jù)的更新或添加,我們可以使用@CachePut注解將這個方法的返回結(jié)果更新或添加到緩存中。
用例:
@Service public class UserService { @Cacheable("userCache") public User getUser(Long id) { // 查詢用戶信息 User user = userRepository.getUser(id); return user; } @CachePut("userCache") public User updateUser(Long id, User user) { // 更新用戶信息 User updatedUser = userRepository.updateUser(id, user); return updatedUser; } } 這個類使用@Service注解標注,表示這個類是一個服務(wù)。在方法級別上,使用@Cacheable注解標注getUser方法,表示這個方法的返回結(jié)果可以被緩存起來。同時,使用@CachePut注解標注updateUser方法,表示這個方法會更新或添加名為"userCache"的緩存。 在這個例子中,getUser方法使用@Cacheable注解標注,表示這個方法的返回結(jié)果可以被緩存起來。查詢用戶信息的操作在第一次執(zhí)行時會被執(zhí)行,返回結(jié)果會被緩存到名為"userCache"的緩存中。下次執(zhí)行g(shù)etUser方法時,如果緩存中已經(jīng)存在這個結(jié)果,就直接從緩存中獲取結(jié)果,不需要再次執(zhí)行查詢操作。 當調(diào)用updateUser方法時,@CachePut注解會更新或添加名為"userCache"的緩存,下次執(zhí)行g(shù)etUser方法時,就可以從緩存中獲取更新后的用戶信息。 @CachePut注解用于更新或添加緩存中的數(shù)據(jù),可以使得開發(fā)者更加靈活地控制緩存的生命周期和緩存的一致性。它是一種簡單但非常有效的解決方案,可以使得開發(fā)者更加輕松地使用緩存來提高應(yīng)用程序的性能。 @CachePut注解是Spring框架中比較常用的注解之一,可以讓開發(fā)者更加靈活地控制緩存的生命周期和緩存的一致性。需要注意的是,更新或添加緩存需要謹慎操作,必要時需要考慮緩存的失效機制和緩存更新機制來維護緩存的一致性。
(32)@Transactional
作用:用于指定事務(wù)的范圍。既可以在方法上使用,也可以直接在類上使用。
用例:
@Service public class UserService { @Autowired private UserRepository userRepository; @Autowired private UserRoleRepository userRoleRepository; @Transactional public void registerUser(String username, String password, String role) { User user = new User(); user.setUsername(username); user.setPassword(password); userRepository.save(user); UserRole userRole = new UserRole(); userRole.setUserId(user.getId()); userRole.setRole(role); userRoleRepository.save(userRole); } }
(33)@EnableTransactionManagement
作用:用于啟用事務(wù)管理功能。
@Transactional是Spring框架中的一個注解,用于標識一個方法或類需要使用事務(wù)進行操作。
在Spring框架中,如果一個方法需要對數(shù)據(jù)庫進行操作,我們可以使用@Transactional注解來確保這個操作在一個事務(wù)中進行,從而保證操作的原子性、一致性、隔離性和持久性。
用例:
@Service @Transactional public class UserService { @Autowired private UserRepository userRepository; public void createUser(User user) { userRepository.save(user); } public void updateUser(Long id, User user) { User existingUser = userRepository.findById(id); if (existingUser != null) { existingUser.setName(user.getName()); existingUser.setEmail(user.getEmail()); userRepository.save(existingUser); } } } 這個類使用@Service注解標注,表示這個類是一個服務(wù)。同時,在類級別上使用@Transactional注解標注,表示這個類中的所有方法都需要使用事務(wù)進行操作。 在這個例子中,createUser和updateUser方法都需要對數(shù)據(jù)庫進行操作,因此使用userRepository來保存或更新用戶信息。由于這個類使用了@Transactional注解來標識,因此userRepository的操作都在一個事務(wù)中進行,從而保證操作的原子性、一致性、隔離性和持久性。 @Transactional注解用于標識一個方法或類需要使用事務(wù)進行操作,可以使得開發(fā)者更加靈活地控制事務(wù)的使用。它是一種簡單但非常有效的解決方案,可以使得開發(fā)者更加輕松地使用事務(wù)來提高應(yīng)用程序的性能和數(shù)據(jù)一致性。 @Transactional注解是Spring框架中比較常用的注解之一,可以讓開發(fā)者更加靈活地控制事務(wù)的使用。需要注意的是,事務(wù)的使用需要謹慎操作,必要時需要考慮事務(wù)的隔離級別、超時時間和回滾機制等來維護數(shù)據(jù)的一致性和應(yīng)用程序的性能。
(34)@EnableAspectJAutoProxy
作用:用于啟用AOP功能。
@EnableAspectJAutoProxy是Spring框架中的一個注解,用于啟用自動代理功能,以便使用AOP(面向切面編程)進行編程。
在Spring框架中,如果需要使用AOP來實現(xiàn)某些功能,我們可以使用@EnableAspectJAutoProxy注解來啟用自動代理功能,從而在運行時自動為我們生成代理對象,以便進行切面編程。
用例:
@Configuration @EnableAspectJAutoProxy public class AppConfig { @Bean public MyAspect myAspect() { return new MyAspect(); } @Bean public UserService userService() { return new UserService(); } } 這個類使用@Configuration注解標注,表示這個類是一個配置類。同時,在類級別上使用@EnableAspectJAutoProxy注解標注,表示這個配置類需要啟用自動代理功能。 在這個例子中,我們定義了一個MyAspect類來實現(xiàn)某些功能的切面編程。為了讓Spring框架能夠自動為我們生成代理對象,我們需要將MyAspect類加入到Spring容器中,并且使用@Bean注解標注。另外,我們還定義了一個UserService類來實現(xiàn)某些業(yè)務(wù)功能。 @EnableAspectJAutoProxy注解用于啟用自動代理功能,可以使得開發(fā)者更加方便地使用AOP來實現(xiàn)某些功能。它是一種簡單但非常有效的解決方案,可以讓開發(fā)者更加輕松地使用切面編程來提高應(yīng)用程序的性能和可維護性。 @EnableAspectJAutoProxy注解是Spring框架中比較常用的注解之一,可以讓開發(fā)者更加方便地使用AOP來實現(xiàn)某些功能。需要注意的是,AOP的使用需要謹慎操作,必要時需要考慮AOP的切面邏輯、切入點和通知類型等來維護應(yīng)用程序的性能和可維護性。
(35)@Aspect
作用:用于定義切面。
@Aspect是Spring框架中的一個注解,用于標識一個類為切面類,從而可以在該類中定義切面邏輯以實現(xiàn)AOP(面向切面編程)。
在Spring框架中,如果需要使用AOP來實現(xiàn)某些功能,我們可以使用@Aspect注解來標識一個類為切面類。在切面類中,我們可以定義切面邏輯,包括切入點、通知類型和切面順序等,從而實現(xiàn)AOP編程的功能。
用例:
@Aspect @Component public class MyAspect { @Before("execution(* com.example.UserService.*(..))") public void beforeAdvice() { System.out.println("Before advice is executed."); } @After("execution(* com.example.UserService.*(..))") public void afterAdvice() { System.out.println("After advice is executed."); } } 這個類使用@Aspect注解標識,表示這個類是一個切面類。同時,我們還使用@Component注解標識這個類,以便Spring框架能夠自動將它加入到Spring容器中。 在這個例子中,我們定義了一個MyAspect類來實現(xiàn)某些功能的切面編程。在這個類中,我們定義了兩個通知類型,即@Before和@After,分別表示在目標方法執(zhí)行前和執(zhí)行后執(zhí)行某些操作。這些通知類型的執(zhí)行條件是通過切入點表達式來定義的。 @Aspect注解用于標識一個類為切面類,可以使得開發(fā)者更加方便地使用AOP來實現(xiàn)某些功能。它是一種簡單但非常有效的解決方案,可以讓開發(fā)者更加輕松地使用切面編程來提高應(yīng)用程序的性能和可維護性。 @Aspect注解是Spring框架中比較常用的注解之一,用于標識一個類為切面類。需要注意的是,AOP的使用需要謹慎操作,必要時需要考慮切入點、通知類型和切面順序等來維護應(yīng)用程序的性能和可維護性。
(36)@Pointcut
作用:用于定義切點。
@Pointcut是Spring框架中的一個注解,用于定義一個切入點,從而可以在該切入點上定義通知類型以實現(xiàn)AOP(面向切面編程)。
在Spring框架中,如果需要使用AOP來實現(xiàn)某些功能,我們可以使用@Pointcut注解來定義一個切入點。在切入點上,我們可以定義切面邏輯,包括通知類型和切面順序等,從而實現(xiàn)AOP編程的功能。
用例:
@Aspect @Component public class MyAspect { @Pointcut("execution(* com.example.UserService.*(..))") public void userServicePointcut() {} @Before("userServicePointcut()") public void beforeAdvice() { System.out.println("Before advice is executed."); } @After("userServicePointcut()") public void afterAdvice() { System.out.println("After advice is executed."); } } 這個類使用@Aspect注解標識,表示這個類是一個切面類。同時,我們還使用@Component注解標識這個類,以便Spring框架能夠自動將它加入到Spring容器中。 在這個例子中,我們定義了一個MyAspect類來實現(xiàn)某些功能的切面編程。在這個類中,我們使用@Pointcut注解定義了一個切入點,即userServicePointcut()方法。在這個切入點上,我們定義了兩個通知類型,即@Before和@After,分別表示在目標方法執(zhí)行前和執(zhí)行后執(zhí)行某些操作。 @Pointcut注解用于定義一個切入點,可以使得開發(fā)者更加方便地使用AOP來實現(xiàn)某些功能。它是一種簡單但非常有效的解決方案,可以讓開發(fā)者更加輕松地使用切面編程來提高應(yīng)用程序的性能和可維護性。 @Pointcut注解是Spring框架中比較常用的注解之一,用于定義一個切入點。需要注意的是,AOP的使用需要謹慎操作,必要時需要考慮切入點、通知類型和切面順序等來維護應(yīng)用程序的性能和可維護性。
(37)@Before
作用:用于在方法執(zhí)行前執(zhí)行通知。
@Before是Spring框架中的一個注解,用于定義在目標方法執(zhí)行前執(zhí)行的通知類型,以實現(xiàn)AOP(面向切面編程)。
在Spring框架中,如果需要在目標方法執(zhí)行前執(zhí)行某些操作,我們可以使用@Before注解來定義一個通知類型。在這個通知類型中,我們可以編寫自己的邏輯代碼,從而實現(xiàn)AOP編程的功能。
用例:
@Aspect @Component public class MyAspect { @Before("execution(* com.example.UserService.*(..))") public void beforeAdvice() { System.out.println("Before advice is executed."); } }
(38)@After
作用:用于在方法執(zhí)行后執(zhí)行通知。
@After是Spring框架中的一個注解,用于定義在目標方法執(zhí)行后執(zhí)行的通知類型,以實現(xiàn)AOP(面向切面編程)。
在Spring框架中,如果需要在目標方法執(zhí)行后執(zhí)行某些操作,我們可以使用@After注解來定義一個通知類型。在這個通知類型中,我們可以編寫自己的邏輯代碼,從而實現(xiàn)AOP編程的功能。
用例:
@Aspect @Component public class MyAspect { @After("execution(* com.example.UserService.*(..))") public void afterAdvice() { System.out.println("After advice is executed."); } }
(39)@Around
作用:用于在方法執(zhí)行前后執(zhí)行通知。
@Around是Spring框架中的一個注解,用于定義在目標方法執(zhí)行前后執(zhí)行的通知類型,以實現(xiàn)AOP(面向切面編程)。
在Spring框架中,如果需要在目標方法執(zhí)行前后執(zhí)行某些操作,我們可以使用@Around注解來定義一個通知類型。在這個通知類型中,我們可以編寫自己的邏輯代碼,從而實現(xiàn)AOP編程的功能。
用例:
@Aspect @Component public class MyAspect { @Around("execution(* com.example.UserService.*(..))") public Object aroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("Before advice is executed."); Object result = joinPoint.proceed(); System.out.println("After advice is executed."); return result; } }
(40)@AfterReturning
作用:用于在方法返回結(jié)果后執(zhí)行通知。
@AfterReturning是Spring框架中的一個注解,用于定義在目標方法返回結(jié)果后執(zhí)行的通知類型,以實現(xiàn)AOP(面向切面編程)。
在Spring框架中,如果需要在目標方法返回結(jié)果后執(zhí)行某些操作,我們可以使用@AfterReturning注解來定義一個通知類型。在這個通知類型中,我們可以編寫自己的邏輯代碼,從而實現(xiàn)AOP編程的功能。
用例:
@Aspect @Component public class MyAspect { @AfterReturning(pointcut = "execution(* com.example.UserService.*(..))", returning = "result") public void afterReturningAdvice(Object result) { System.out.println("After returning advice is executed. Result is " + result); } }
(41)@AfterThrowing
作用:用于在方法拋出異常后執(zhí)行通知。
@AfterThrowing是Spring框架中的一個注解,用于定義在目標方法拋出異常后執(zhí)行的通知類型,以實現(xiàn)AOP(面向切面編程)。
在Spring框架中,如果需要在目標方法拋出異常后執(zhí)行某些操作,我們可以使用@AfterThrowing注解來定義一個通知類型。在這個通知類型中,我們可以編寫自己的邏輯代碼,從而實現(xiàn)AOP編程的功能。
用例:
@Aspect @Component public class MyAspect { @AfterThrowing(pointcut = "execution(* com.example.UserService.*(..))", throwing = "ex") public void afterThrowingAdvice(Exception ex) { System.out.println("After throwing advice is executed. Exception is " + ex); } }
(42)@Order
作用:用于指定切面的執(zhí)行順序。
@Order是Spring框架中的一個注解,用于定義切面的執(zhí)行順序。
在Spring框架中,如果有多個切面類需要對同一個方法進行切面處理,那么這些切面類的執(zhí)行順序可能會影響到最終的結(jié)果。為了控制這些切面類的執(zhí)行順序,我們可以使用@Order注解來定義它們的執(zhí)行順序。
@Order注解可以應(yīng)用在切面類上,用于指定切面執(zhí)行的順序。它的參數(shù)為一個整數(shù),數(shù)值越小表示優(yōu)先級越高,數(shù)值相同時按照類名的自然順序進行排序。
用例:
@Aspect @Component @Order(1) public class MyAspect1 { @Before("execution(* com.example.UserService.*(..))") public void beforeAdvice() { System.out.println("Before advice from MyAspect1 is executed."); } } @Aspect @Component @Order(2) public class MyAspect2 { @Before("execution(* com.example.UserService.*(..))") public void beforeAdvice() { System.out.println("Before advice from MyAspect2 is executed."); } }
(43)@Slf4j
作用:用于簡化日志記錄。
@Slf4j是Lombok框架中的一個注解,用于在Java類中自動生成日志記錄器。
在Java開發(fā)中,日志記錄是非常重要的一環(huán),可以幫助我們更好地了解程序的運行情況,從而更好地進行調(diào)試和優(yōu)化。通常情況下,我們需要手動引入日志框架(如Log4j、SLF4J等)并編寫相應(yīng)的日志記錄代碼。這些代碼可能會比較繁瑣,而且容易出現(xiàn)錯誤。為了簡化這個過程,Lombok框架提供了一個@Slf4j注解,可以在Java類中自動生成日志記錄器。
使用@Slf4j注解非常簡單,只需要在Java類中添加這個注解即可。在使用時,我們可以直接使用log變量來記錄日志,而不需要再引入其他的日志框架
用例:
@Slf4j public class MyService { public void doSomething() { log.debug("This is a debug message."); log.info("This is an info message."); log.error("This is an error message."); } } 在這個例子中,我們定義了一個MyService類,并使用@Slf4j注解來自動生成日志記錄器。然后,在doSomething()方法中,我們直接使用log變量來記錄日志,而不需要再引入其他的日志框架。 需要注意的是,使用@Slf4j注解需要在編譯器中安裝Lombok插件,否則可能會出現(xiàn)編譯錯誤。另外,雖然@Slf4j注解非常方便,但在實際應(yīng)用中,我們還需要根據(jù)實際情況選擇合適的日志框架,并編寫相應(yīng)的日志記錄代碼。 總之,@Slf4j是Lombok框架中的一個注解,可以在Java類中自動生成日志記錄器,從而簡化日志記錄的過程。它是一種極為方便的解決方案,可以提高應(yīng)用程序的可維護性和可讀性。
(44)@Data
作用:用于自動生成JavaBean的getters、setters、toString、hashCode和equals方法。
@Data是Lombok框架中的一個注解,可以自動生成Java類的getter、setter、equals、hashCode和toString等方法。
在Java開發(fā)中,我們經(jīng)常需要編寫一些POJO類來表示數(shù)據(jù)結(jié)構(gòu)。這些類通常包含一些成員變量,并且需要編寫相應(yīng)的getter、setter、equals、hashCode和toString等方法。這些方法通常是相似的,而且比較繁瑣。為了簡化這個過程,Lombok框架提供了一個@Data注解,可以自動生成這些方法。
使用@Data注解非常簡單,只需要在Java類上添加這個注解即可。在使用時,我們可以直接訪問類的成員變量,并且可以自動生成相應(yīng)的getter、setter、equals、hashCode和toString等方法。
用例:
@Data public class User { private Long id; private String name; private Integer age; }
(45)@NoArgsConstructor
作用:用于生成無參構(gòu)造函數(shù)。
@NoArgsConstructor是Lombok框架中的一個注解,用于自動生成一個無參構(gòu)造方法。
在Java開發(fā)中,我們經(jīng)常需要編寫一些POJO類來表示數(shù)據(jù)結(jié)構(gòu)。這些類通常包含一些成員變量,并且需要編寫相應(yīng)的構(gòu)造方法。在某些情況下,我們可能需要編寫一個無參構(gòu)造方法,用于創(chuàng)建一個對象的實例。這個構(gòu)造方法通常是簡單的、無需參數(shù)的。為了簡化這個過程,Lombok框架提供了一個@NoArgsConstructor注解,可以自動生成一個無參構(gòu)造方法。
使用@NoArgsConstructor注解非常簡單,只需要在Java類上添加這個注解即可。在使用時,我們可以直接創(chuàng)建對象的實例,而不需要手動編寫無參構(gòu)造方法。
用例:
@NoArgsConstructor public class User { private Long id; private String name; private Integer age; } 在這個例子中,我們定義了一個User類,并使用@NoArgsConstructor注解來自動生成一個無參構(gòu)造方法。然后,在其他的Java類中,我們可以直接創(chuàng)建User對象的實例,而不需要手動編寫無參構(gòu)造方法。 需要注意的是,使用@NoArgsConstructor注解需要在編譯器中安裝Lombok插件,否則可能會出現(xiàn)編譯錯誤。另外,雖然@NoArgsConstructor注解非常方便,但在實際應(yīng)用中,我們還需要根據(jù)實際情況選擇合適的構(gòu)造方法,并編寫相應(yīng)的代碼。 總之,@NoArgsConstructor是Lombok框架中的一個注解,用于自動生成一個無參構(gòu)造方法,從而簡化Java開發(fā)的過程。它是一種極為方便的解決方案,可以提高應(yīng)用程序的可維護性和可讀性。
(46)@AllArgsConstructor
作用:用于生成全參構(gòu)造函數(shù)。
@AllArgsConstructor是Lombok框架中的一個注解,用于自動生成一個全參構(gòu)造方法。
在Java開發(fā)中,我們經(jīng)常需要編寫一些POJO類來表示數(shù)據(jù)結(jié)構(gòu)。這些類通常包含一些成員變量,并且需要編寫相應(yīng)的構(gòu)造方法。在某些情況下,我們可能需要編寫一個全參構(gòu)造方法,用于初始化所有成員變量。這個構(gòu)造方法通常包含所有成員變量作為參數(shù)。為了簡化這個過程,Lombok框架提供了一個@AllArgsConstructor注解,可以自動生成一個全參構(gòu)造方法。
使用@AllArgsConstructor注解非常簡單,只需要在Java類上添加這個注解即可。在使用時,我們可以直接創(chuàng)建對象的實例,并傳入相應(yīng)的參數(shù),而不需要手動編寫全參構(gòu)造方法。
用例:
@AllArgsConstructor public class User { private Long id; private String name; private Integer age; } 在這個例子中,我們定義了一個User類,并使用@AllArgsConstructor注解來自動生成一個全參構(gòu)造方法。然后,在其他的Java類中,我們可以直接創(chuàng)建User對象的實例,并傳入相應(yīng)的參數(shù),而不需要手動編寫全參構(gòu)造方法。 需要注意的是,使用@AllArgsConstructor注解需要在編譯器中安裝Lombok插件,否則可能會出現(xiàn)編譯錯誤。另外,雖然@AllArgsConstructor注解非常方便,但在實際應(yīng)用中,我們還需要根據(jù)實際情況選擇合適的構(gòu)造方法,并編寫相應(yīng)的代碼。 總之,@AllArgsConstructor是Lombok框架中的一個注解,用于自動生成一個全參構(gòu)造方法,從而簡化Java開發(fā)的過程。它是一種極為方便的解決方案,可以提高應(yīng)用程序的可維護性和可讀性。
(47)@Builder
作用:用于生成Builder模式的構(gòu)造函數(shù)。
@Builder是Lombok框架中的一個注解,用于自動生成一個Builder模式的構(gòu)造器。
在Java開發(fā)中,我們經(jīng)常需要編寫一些POJO類來表示數(shù)據(jù)結(jié)構(gòu)。這些類通常包含一些成員變量,并且需要編寫相應(yīng)的構(gòu)造方法。在某些情況下,我們可能需要編寫一個Builder模式的構(gòu)造器,用于方便地創(chuàng)建對象實例。Builder模式是一種創(chuàng)建對象的設(shè)計模式,它可以通過鏈式調(diào)用的方式設(shè)置對象的屬性,并最終創(chuàng)建一個不可變的對象。為了簡化這個過程,Lombok框架提供了一個@Builder注解,可以自動生成一個Builder模式的構(gòu)造器。
使用@Builder注解非常簡單,只需要在Java類上添加這個注解即可。在使用時,我們可以使用鏈式調(diào)用的方式設(shè)置對象的屬性,并最終創(chuàng)建一個不可變的對象。
用例:
@Builder public class User { private Long id; private String name; private Integer age; } 在這個例子中,我們定義了一個User類,并使用@Builder注解來自動生成一個Builder模式的構(gòu)造器。然后,在其他的Java類中,我們可以使用鏈式調(diào)用的方式設(shè)置User對象的屬性,并最終創(chuàng)建一個不可變的對象。 需要注意的是,使用@Builder注解需要在編譯器中安裝Lombok插件,否則可能會出現(xiàn)編譯錯誤。另外,雖然@Builder注解非常方便,但在實際應(yīng)用中,我們還需要根據(jù)實際情況選擇合適的構(gòu)造方法,并編寫相應(yīng)的代碼。 總之,@Builder是Lombok框架中的一個注解,用于自動生成一個Builder模式的構(gòu)造器,從而簡化Java開發(fā)的過程。它是一種極為方便的解決方案,可以提高應(yīng)用程序的可維護性和可讀性。
(48)@EqualsAndHashCode
作用:用于生成hashCode和equals方法。
@EqualsAndHashCode是Lombok框架中的一個注解,用于自動生成equals()和hashCode()方法。
在Java開發(fā)中,我們經(jīng)常需要比較兩個對象是否相等,并且需要根據(jù)對象的屬性生成一個hashCode值。為了簡化這個過程,Lombok框架提供了一個@EqualsAndHashCode注解,可以自動生成equals()和hashCode()方法。
使用@EqualsAndHashCode注解非常簡單,只需要在Java類上添加這個注解即可。在使用時,Lombok會根據(jù)類的屬性自動生成equals()和hashCode()方法。如果兩個對象的所有屬性都相等,那么它們的equals()方法返回true,并且它們的hashCode()方法返回相同的值。
用例:
@EqualsAndHashCode public class User { private Long id; private String name; private Integer age; }
(49)@ToString
作用:用于生成toString方法。
@ToString是Lombok框架中的一個注解,用于自動生成toString()方法。
在Java開發(fā)中,我們經(jīng)常需要將對象轉(zhuǎn)換為字符串,以便于輸出或日志記錄。為了簡化這個過程,Lombok框架提供了一個@ToString注解,可以自動生成toString()方法。
使用@ToString注解非常簡單,只需要在Java類上添加這個注解即可。在使用時,Lombok會根據(jù)類的屬性自動生成toString()方法,這個方法將輸出類的名稱和所有屬性的名稱和值。如果需要排除某些屬性,可以使用exclude屬性來指定排除的屬性。
用例:
@ToString(exclude = "password") public class User { private Long id; private String name; private String password; }
(50)@Getter
作用:用于生成getters方法。
@Getter是Lombok框架中的一個注解,用于自動生成getter方法。
在Java開發(fā)中,我們經(jīng)常需要為類的屬性編寫getter和setter方法。為了簡化這個過程,Lombok框架提供了一個@Getter注解,可以自動生成getter方法。
使用@Getter注解非常簡單,只需要在Java類上添加這個注解即可。在使用時,Lombok會根據(jù)類的屬性自動生成對應(yīng)的getter方法。如果需要生成setter方法,可以使用@Setter注解。
用例:
@Getter public class User { private Long id; private String name; private Integer age; }
總結(jié)
到此這篇關(guān)于SpringBoot最常用的50個注解的文章就介紹到這了,更多相關(guān)SpringBoot常用注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA使用maven創(chuàng)建hibernate項目的實現(xiàn)步驟(圖文)
本文主要介紹了IDEA使用maven創(chuàng)建hibernate項目的實現(xiàn)步驟,包括創(chuàng)建Maven項目,配置Hibernate,以及創(chuàng)建實體類映射到數(shù)據(jù)庫等步驟,具有一定的參考價值,感興趣的可以了解一下2023-08-08Activiti7與Spring以及Spring Boot整合開發(fā)
這篇文章主要介紹了Activiti7與Spring以及Spring Boot整合開發(fā),在Activiti中核心類的是ProcessEngine流程引擎,與Spring整合就是讓Spring來管理ProcessEngine,有感興趣的同學可以參考閱讀2023-03-03JavaWeb實現(xiàn)學生信息管理系統(tǒng)(2)
這篇文章主要介紹了JavaWeb實現(xiàn)學生信息管理系統(tǒng)的第二篇,實現(xiàn)學生管理系統(tǒng)的查找和添加功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08java使用淘寶API讀寫json實現(xiàn)手機歸屬地查詢功能代碼
本文介紹java使用淘寶API讀寫json實現(xiàn)手機歸屬地查詢功能,代碼簡單,大家可以參考使用2013-11-11SpringBoot security安全認證登錄的實現(xiàn)方法
這篇文章主要介紹了SpringBoot security安全認證登錄的實現(xiàn)方法,也就是使用默認用戶和密碼登錄的操作方法,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-02-02