亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot中常用注解的使用合集

 更新時(shí)間:2023年07月28日 08:32:31   作者:Jimmy  
注解?annotation一般是用來定義一個類、屬性和一些方法,以便程序能夠被編譯處理,本文為大家整理了SpringBoot中的常用注解以及它們的使用,需要的可以參考下

Spring Boot 框架提供了許多注解來簡化配置和開發(fā)過程。

什么是注解式編程

注解 annotation 用來定義一個類、屬性和一些方法,以便程序能夠被編譯處理。

它相當(dāng)于一個說明文件,告訴應(yīng)用程序某個類或者屬性是什么,要怎么處理。注解可以用于標(biāo)注包、類、方法和變量等。

注解式編程是一種基于注釋的程序編碼風(fēng)格。它使用特定的注釋來配置和定義應(yīng)用程序的行為,而不需要顯式編寫大量的配置代碼。

比如:

@RestController
public class Jimmy {
  @RequestMapping("/jimmy")
  public String sayHi() {
    return "Hello, Jimmy."
  }
}

常用注解

注解分不同場景使用,使用在類名上,使用在方法上等。

使用在類名上的注解

注解使用位置說明
@RestController類名上作用相當(dāng)于 @ResponseBody 加 @Controller
@Controller類名上聲明此類是一個 SpringMVC Controller 對象
@Service類名上聲明一個業(yè)務(wù)處理類(實(shí)現(xiàn)非接口類)
@Repository類名上聲明數(shù)據(jù)庫訪問類(實(shí)現(xiàn)非接口類)
@Component類名上代表其是 Spring 管理類,常用在無法用 @Service、@Repository 描述的 Spring 管理類上,相當(dāng)于通用的注釋
@Configuration類名上聲明此類是一個配置類,常與 @Bean 配合使用
@Resource類名上默認(rèn)按 byName 自動注入
@Autowired類名上、屬性或構(gòu)造函數(shù)參數(shù)上默認(rèn)按 byType 自動注入
@RequestMapping類名或方法上用在類上,則表示所有響應(yīng)請求的方法都是以該地址作為父路徑的
@Transactional類名或方法上用于處理事務(wù)
@Qualifier類名或?qū)傩陨?/td>為 Bean 指定名稱,隨后再通過名稱引用 Bean

下面我們一個個來解析:

@RestController

用于返回 JSON 、XML 等數(shù)據(jù),但是不能返回 HTML 頁面。相當(dāng)于 @ResponseBody@Controller 合在一起的作用。

JSON - JavaScript Object Notation, JS 對象標(biāo)記; XML - eXtensible Markup Language;HTML - HyperText Markup Language

@RestController
public class Hello {
  @RequestMapping("/jimmy")
  public String sayHi() {
    return "Hello, Jimmy.";
  }
}

@Controller

用于標(biāo)注控制器層,在 MVC 開發(fā)模式中代表 C(控制器)。

上面 @RestController 的例子,等價(jià)于下面的寫法:

@Controller
public class Hello {
  @RequestMapping("/jimmy")
  @ResponseBody
  public String sayHi() {
    return "Hello, jimmy";
  }
}

@Service

用于聲明一個業(yè)務(wù)處理類(實(shí)現(xiàn)非接口類),用于標(biāo)注服務(wù)層,處理業(yè)務(wù)邏輯。

@Service
public class ArticleServiceImpl implements ArticleService {
  @Autowired
  private ArticleRepository articleRepository;
  @Override
  public Article findArticleById(long id) {
    return articleRepository.findById(id);
  }
}

@Repository

用于標(biāo)注數(shù)據(jù)訪問層。

@Repository
public class UserRepository {
  @Autowired 
  private JdbcTemplate jdbcTemplate;
  public User getUserById(long id) {
    String sql = "SELECT * FROM users WHERE is = ?";
    return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class));
  }
}

@Component

@Component 是一個通用的注釋,用于標(biāo)識一個類是一個組件。使用 @Component 注釋的類會被框架自動掃描,并創(chuàng)建為一個 Bean,可以在應(yīng)用程序的其他部分進(jìn)行注入和使用。

@Component
public class EmailService {
  public void sendEmail(String recipient, String message) {
    // Send email logic
  }
}

@Compoent 沒有特定的業(yè)務(wù)含義。如果在應(yīng)用程序中有更具體的組件類型,如數(shù)據(jù)訪問組件(@Repository),服務(wù)組件(@Service),控制器組件(@Controller)等,推薦使用更加具體的注釋以更好表達(dá)其用途和語義。

@Resource

用來標(biāo)記和注入依賴。它可以用于注入其他 Spring 管理的 Bean、JNDI 資源、以及其他的依賴項(xiàng)。

@Service
public class UserService {
  @Resource
  private UserRepository userRepository;
}

@Configuration

用于標(biāo)識一個類是配置類。配置類在應(yīng)用程序中扮演著重要的角色,用于定義和組織應(yīng)用程序的一些配置。它作為 Bean 的載體。

@Configuration
public class AppConfig {
  @Bean
  public DataSource dataSource() {
    // create and setting datasource object
    DataSource dataSource = new DataSource();
    dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
    dataSource.setUsername("username");
    dataSource.setPassword("password");
    return dataSource;
  }
}

@Autowired

表示被修飾的類需要注入對象。Spring 會掃描所有被 @Autowired 標(biāo)注的類,然后根據(jù)類型在 loC 容器中找到匹配的類進(jìn)行注入。被 @Autowired 注釋后的類不需要再導(dǎo)入文件。

例子見 @Repository

@Resource@Autowired 都可以用來裝配 Bean

@RequestMapping

用來處理請求地址映射,用在類或者方法上。如果用在類上,則表示類中的所有響應(yīng)請求的方法都是以該路徑作為父路徑的。

例子見 @RestController

其有六個屬性:

  • Params: 指定 Request 中必須包含某些參數(shù)值,才讓該方法處理
  • Headers: 指定 Request 中必須包含某些指定的 header 值,才能讓該方法處理請求
  • Value: 指定請求的實(shí)際地址,指定的地址可以是 URI Template 模式
  • Method: 指定請求的 method 類型,如 GET, POST, PUT, DELETE
  • Consumes: 指定處理請求的提交內(nèi)容類型 Content-Type,比如 "application/json, text/html"
  • Produces: 指定返回的內(nèi)容類型。只有當(dāng) Request 請求頭中的 Accept 類型包含該指定類型時(shí)才返回

@Transactional

可以將一個方法或者類標(biāo)記為事務(wù)性操作。

@Service
@Transactional
public class UserService {
  @Autowired
  private UserRepository userRepository;
  public void updateUser(User user) {
    // update user information
    userRepository.save(user);
  }
}

慎用,如果事務(wù)執(zhí)行過程中報(bào)錯,則需要使用 try{ } catch{ throw Exception } 捕獲

@Qualifier

用于標(biāo)注哪一個實(shí)現(xiàn)類才需要注入的。

@Qualifier 常和 @Autowored 一起使用:

@Component
public class PaymentService {
  @Autowired
  @Qualifier("paypalPaymentProcessor")
  private PaymentProcessor paymentprocessor;
}

使用在方法上的注釋

常用的比如:

注釋使用位置說明
@RequestBody方法參數(shù)前常用來處理 application、application/xml 等 Content-Type 類型的數(shù)據(jù),意味著 HTTP 消息是 JSON/XML 格式,需將其轉(zhuǎn)換為制定類型參數(shù)
@PathVariable方法參數(shù)前將 URL 獲取的參數(shù)映射到方法參數(shù)上
@Bean方法上聲明該方法的返回結(jié)果是一個由 Spring 容器管理的 Bean
@ResponseBody方法上通過適當(dāng)?shù)?HttpMessageConverter 將控制器中方法返回的對象轉(zhuǎn)換為指定格式 (JSON/XML) 后,寫入 Response 對象的 body 數(shù)據(jù)區(qū)

@RequestBody

@RestController
@RequestMapping("/api")
public class UserController {
  @PostMapping("/user")
  public ResponseEntity<String> addUser(@RequestBody MyData myData) {
    // handle data
    return ResponseEntity.ok("Data received");
  }
}

@PathVariable

用于獲取參數(shù)中的路徑。

@RestController
@RequestMapping("/api")
public class UserController {
  @GetMapping("/users/{id}")
  public ResponseEntity<String> getUserById(@PathVariable("id") Long userId) {
    // ger user information by id
    return ResponseEntity.ok("User Information");
  }
}

注意:

  • @PathVariable 注解的參數(shù)名稱必須與 URL 路徑參數(shù)的名稱相匹配。
  • 如果參數(shù)名稱與路徑參數(shù)相同,則可以省略 @PathVariable 中的參數(shù)名稱。

@Bean

用于封裝數(shù)據(jù),一般有 SetterGetter 方法。在 MVC 模式中對應(yīng)的是 M(模型)。

@Configuration
public class AppConfig {
  @Bean
  public Foo foo() {
    return new Foo(bar())
  }
}

@ResponseBody

使用該注解后,數(shù)據(jù)直接寫入輸入流中,不需要進(jìn)行視圖渲染。

@RestController
@RequestMapping("/api")
public class HelloController {
  @GetMapping("/hello")
  @ResponseBody
  public String sayHi() {
    return "Hello, Jimmy.";
  }
}

其他注解

比如:

標(biāo)題使用位置說明
@EnableAutoConfiguration入口類/類名上用來提供自動配置
@SpringBootApplication入口類/類名上用來啟動入口類 Application
@EnableScheduling入口類/類名上用來開啟計(jì)劃任務(wù)
@EnableAsync入口類/類名上用來開啟異步注解功能
@ComponentScan入口類/類名上用來掃描組件,可自動發(fā)現(xiàn)和裝配一些 Bean。
@Value屬性上用來獲取配置文件中的值

以上就是SpringBoot中常用注解的使用合集的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot常用注解的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解決SpringBoot項(xiàng)目啟動后網(wǎng)頁顯示Please sign in的問題

    解決SpringBoot項(xiàng)目啟動后網(wǎng)頁顯示Please sign in的問題

    這篇文章主要介紹了解決SpringBoot項(xiàng)目啟動后網(wǎng)頁顯示Please sign in的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Spring?IoC容器Bean作用域的singleton與prototype使用配置

    Spring?IoC容器Bean作用域的singleton與prototype使用配置

    這篇文章主要為大家介紹了Spring?IoC容器Bean作用域的singleton與prototype使用配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • 教你怎么用SpringBoot+Mybati-Plus快速搭建代碼

    教你怎么用SpringBoot+Mybati-Plus快速搭建代碼

    Mybatis自身通過了逆向工程來幫助我們快速生成代碼,但Mybatis-plus卻更加強(qiáng)大,不僅僅可以生成dao,pojo,mapper,還有基本的controller和service層代碼,接下來我們來寫一個簡單的人門案例是看看如何mybatis-plus是怎么實(shí)現(xiàn)的,需要的朋友可以參考下
    2021-06-06
  • 淺談Java中的atomic包實(shí)現(xiàn)原理及應(yīng)用

    淺談Java中的atomic包實(shí)現(xiàn)原理及應(yīng)用

    這篇文章主要介紹了淺談Java中的atomic包實(shí)現(xiàn)原理及應(yīng)用,涉及Atomic在硬件上的支持,Atomic包簡介及源碼分析等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Java?Socket實(shí)現(xiàn)聊天室功能

    Java?Socket實(shí)現(xiàn)聊天室功能

    這篇文章主要為大家詳細(xì)介紹了Java?Socket實(shí)現(xiàn)聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Java 八種基本類型和基本類型封裝類

    Java 八種基本類型和基本類型封裝類

    八種基本數(shù)據(jù)類型分別是:int、short、float、double、long、boolean、byte、char;下面跟隨腳本之家小編一起學(xué)習(xí)java八種基本類型和基本類型封裝類
    2017-09-09
  • Java數(shù)據(jù)結(jié)構(gòu)之對象的比較

    Java數(shù)據(jù)結(jié)構(gòu)之對象的比較

    比較對象是面向?qū)ο缶幊陶Z言的一個基本特征,下面這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)結(jié)構(gòu)之對象的比較,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • Spring Boot 事務(wù)示例詳解

    Spring Boot 事務(wù)示例詳解

    Spring Boot 提供了強(qiáng)大的事務(wù)管理功能,通過 @Transactional 注解可以方便地配置事務(wù)的傳播行為和屬性,理解和合理應(yīng)用這些配置,可以有效地提高應(yīng)用程序的數(shù)據(jù)一致性和完整性,本文介紹Spring Boot 事務(wù)的相關(guān)知識,感興趣的朋友一起看看吧
    2025-04-04
  • 基于注解的組件掃描詳解

    基于注解的組件掃描詳解

    這篇文章主要介紹了基于注解的組件掃描詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 16個SpringBoot擴(kuò)展接口的總結(jié)和實(shí)例

    16個SpringBoot擴(kuò)展接口的總結(jié)和實(shí)例

    Spring Boot是一個開源的Java框架,它簡化了基于Spring的應(yīng)用程序的開發(fā)和部署,它提供了許多強(qiáng)大的特性和擴(kuò)展接口,本文給大家介紹了16個常用的Spring Boot擴(kuò)展接口,需要的朋友可以參考下
    2023-09-09

最新評論