最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot中常用注解的使用合集

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

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

什么是注解式編程

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

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

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

比如:

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

常用注解

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

使用在類名上的注解

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

下面我們一個(gè)個(gè)來解析:

@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

用于聲明一個(gè)業(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 是一個(gè)通用的注釋,用于標(biāo)識一個(gè)類是一個(gè)組件。使用 @Component 注釋的類會被框架自動掃描,并創(chuàng)建為一個(gè) 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)識一個(gè)類是配置類。配置類在應(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

其有六個(gè)屬性:

  • 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

可以將一個(gè)方法或者類標(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)錯(cuò),則需要使用 try{ } catch{ throw Exception } 捕獲

@Qualifier

用于標(biāo)注哪一個(gè)實(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é)果是一個(gè)由 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ù),一般有 Setter、Getter 方法。在 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)文章

最新評論

宝丰县| 河东区| 内乡县| 布拖县| 习水县| 丹江口市| 黄骅市| 乌拉特中旗| 亚东县| 垦利县| 台北县| 腾冲县| 左权县| 郓城县| 鄂温| 清远市| 舞阳县| 罗山县| 开平市| 富蕴县| 友谊县| 株洲市| 溆浦县| 万载县| 龙门县| 海盐县| 铁力市| 汶上县| 岳西县| 昔阳县| 眉山市| 清丰县| 景德镇市| 安阳县| 白山市| 神池县| 新郑市| 冀州市| 日土县| 垦利县| 个旧市|