成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

超全的SpringBoot常用注解!

開發 前端
Spring Boot 提供了大量的注解,用于簡化配置和加速程序開發。那么接下來,咱們就一起來看下 Spring Boot 中的常用注解有哪些?及其這些注解的具體使用。

Spring Boot 提供了大量的注解,用于簡化配置和加速程序開發。

那么接下來,咱們就一起來看下 Spring Boot 中的常用注解有哪些?及其這些注解的具體使用。

1.Bean相關

@Component:將一個類標識為 Spring 組件(Bean),可以被 Spring 容器自動檢測和注冊。通用注解,適用于任何層次的組件。

@Component
public class MyComponent {
    public void doSomething() {
        System.out.println("MyComponent is doing something.");
    }
}

@ComponentScan:自動掃描指定包及其子包中的 Spring 組件。

@ComponentScan("com.example") // 掃描com.example包下的組件,加載到Spring容器
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

@Controller:標識控制層組件,實際上是 @Component 的一個特化,用于表示 Web 控制器。處理 HTTP 請求并返回視圖或響應數據。

@Controller
public class MyController {
    @Autowired
    private final UserService userService;

    @GetMapping("/user")
    public String getUser(Model model) {
        User user = userService.getUserById(1);
        model.addAttribute("user", user);
        return "user";
    }
}

@RestController:是 @Controller 和 @ResponseBody 的結合,返回的對象會自動序列化為 JSON 或 XML,并寫入 HTTP 響應體中。

@RestController
public class MyController {
    @Autowired
    private final UserService userService;

    @GetMapping("/user")
    public User getUser() {
        User user = userService.getUserById(1);
        return user;
    }
}

@Service:標識服務層組件,實際上是 @Component 的一個特化,用于表示業務邏輯服務。

@Service
public class MyService {
}

@Repository:標識持久層組件(DAO 層),實際上是 @Component 的一個特化,用于表示數據訪問組件。常用于與數據庫交互。

@Repository
public interface UserDao {
}

@Bean:方法注解,用于修飾方法,主要功能是將修飾方法的返回對象添加到 Spring 容器中,使得其他組件可以通過依賴注入的方式使用這個對象。

@Configuration
public class AppConfig {
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}

@Configuration:標識一個類作為配置類,@Component 的一個特化,通常配合 @Bean 注解一起使用。

@Configuration
public class AppConfig {
}

@Scope:用于聲明一個 Spring Bean 實例的作用域,作用域的范圍有單例模式、原型模式(多例模式)等。

@Configuration
public class AppConfig {
    @Bean
    @Scope("prototype")
    public MyPrototypeBean myPrototypeBean() {
        return new MyPrototypeBean();
    }
}

2.依賴注入

@Autowired:用于自動注入依賴對象,Spring 框架提供的注解。

@RestController
public class MyController {
    @Autowired
    private final UserService userService;

    @GetMapping("/user")
    public User getUser() {
        User user = userService.getUserById(1);
        return user;
    }
}

@Resource:按名稱自動注入依賴對象(也可以按類型,但默認按名稱),JDK 提供注解。

@RestController
public class MyController {
    @Resource
    private final UserService userService;

    @GetMapping("/user")
    public User getUser() {
        User user = userService.getUserById(1);
        return user;
    }
}

@Qualifier:與 @Autowired 一起使用,用于指定要注入的 Bean 的名稱。當存在多個相同類型的 Bean 時,可以使用 @Qualifier 來指定注入哪一個。

@RestController
public class MyController {
    @Autowired
    @Qualifier("userService")
    private final UserService us;

    @GetMapping("/user")
    public User getUser() {
        User user = userService.getUserById(1);
        return user;
    }
}

3.Web相關

@RequestMapping:用于映射 HTTP 請求到處理方法上,支持 GET、POST、PUT、DELETE 等請求方法。可以標注在類或方法上。標注在類上時,表示類中的所有響應請求的方法都是以該類路徑為父路徑。

@RestController
@RequestMapping("/contoller")
public class MyController {
    @Resource
    private final UserService userService;

    @RequestMapping("/user")
    public User getUser() {
        User user = userService.getUserById(1);
        return user;
    }
}

@GetMapping、@PostMapping、@PutMapping、@DeleteMapping:分別用于映射 HTTP GET、POST、PUT、DELETE 請求到處理方法上。它們是 @RequestMapping 的特化,分別對應不同的 HTTP 請求方法。

@RestController
@GetMapping("/contoller")
public class MyController {
    @Resource
    private final UserService userService;

    @GetMapping("/user")
    public User getUser() {
        User user = userService.getUserById(1);
        return user;
    }
}

@RequestParam:用于將請求參數綁定到 Controller 方法的參數上。它主要用于處理 GET、POST 等請求中的查詢參數,例如將 http://example.com/api?param1=value1&param2=value2 中的 param1 和 param2 參數設置到方法的參數上。

@RestController
public class MyController {
    @GetMapping("/hello")
    public String sayHello(@RequestParam("name") String userName) {
        return "Hello, " + userName;
    }
}

@PathVariable:用于從請求的 URL 路徑中提取變量值,并將其綁定到控制器方法的參數上。

@GetMapping("/user/{userId}")
public String getUserById(@PathVariable("userId") Long id) {
    return "User with ID " + id;
}

@RequestBody:將 HTTP 請求體的內容(如 JSON、XML)轉換為 Java 對象。通常用于接收前端傳遞的數據,標注在方法的參數上。

@Controller
public class MyController {
    @PostMapping("/submit")
    public String submitData(@RequestBody MyData myData) {
        System.out.println(myData);
        return "success";
    }
}

@ResponseBody:將方法的返回值轉換為指定格式(如 JSON、XML)作為 HTTP 響應的內容返回給客戶端。通常與 @RequestMapping 或 @GetMapping 等注解一起使用在方法上。

@RestController
public class MyController {
    @GetMapping("/data")
    @ResponseBody
    public String getData() {
        return "Some data";
    }
}

4. 讀取配置

@Value:用于注入屬性值,通常從配置文件中獲取。標注在字段上,并指定屬性值的來源(如配置文件中的某個屬性)。

@Component
public class MyComponent {
    @Value("${my.property}")
    private String myPropertyValue;

    public void printValue() {
        System.out.println(myPropertyValue);
    }
}

@ConfigurationProperties:用于將配置屬性綁定到一個實體類上。通常用于從配置文件中讀取屬性值并綁定到類的字段上。

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "my.app")
public class MyAppProperties {
    private String property1;
    private int property2;

    // Getters and setters
}

5. 配置啟動注解

@SpringBootApplication:用于標識 SpringBoot 應用程序的入口類。它是一個組合注解,包括了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan 三個注解。

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

@EnableAutoConfiguration:啟用 Spring Boot 的自動配置機制,根據添加的依賴和配置文件自動配置 Spring 應用。

6. 其他常用注解

@Transactional:聲明事務管理。標注在類或方法上,指定事務的傳播行為、隔離級別等。

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class MyService {
    @Transactional
    public void performTransactionalOperation() {
        // Database operations
    }
}

@Scheduled:聲明一個方法需要定時執行。標注在方法上,并指定定時執行的規則(如每隔一定時間執行一次)。

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class MyScheduledTask {
    @Scheduled(fixedRate = 5000)
    public void performTask() {
        System.out.println("Task executed.");
    }
}

小結

Spring Boot 中的注解用很多,本文也是走馬觀花的帶大家了解了一下 Spring Boot 中的常見注解。當然這些注解也不需要全部記住,只需有一個大概的印象即可,用的時候再查具體的使用就可以了。

責任編輯:姜華 來源: 磊哥和Java
相關推薦

2020-09-24 10:00:50

SpringBoo

2020-12-28 09:41:40

MySQL數據庫函數

2021-03-29 09:37:17

SpringBoot常用注解Spring Boot

2011-03-07 17:25:33

ProFTPD啟動

2011-03-07 17:15:52

ProFTPD配置

2011-03-07 17:24:33

ProFTPD安裝

2023-11-10 08:56:49

Springboot常用的注解

2020-02-18 23:53:19

TCP網絡協議

2022-06-15 21:16:49

Java

2021-04-20 09:56:58

Python 開發編程語言

2020-04-02 10:37:55

微服務架構數據

2021-01-14 05:16:09

MyBatis動態代理

2022-05-07 11:06:03

TkinterPython代碼

2018-04-02 17:52:33

閃存

2024-09-26 12:28:49

2022-06-28 09:26:25

Python配置文件

2016-02-22 15:45:20

戴爾云計算

2022-06-13 08:49:58

Python配置文件

2022-03-24 07:38:07

注解SpringBoot項目
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区久久久久久久网站 | 丁香综合 | 羞羞色影院 | 久久高清 | 精品伦精品一区二区三区视频 | 青草青草久热精品视频在线观看 | 欧美不卡视频一区发布 | 五月激情婷婷网 | 亚洲欧美在线视频 | 一级毛片在线看 | 亚洲第一中文字幕 | 国产精品日日摸夜夜添夜夜av | 亚州精品天堂中文字幕 | 国产精品福利在线观看 | 午夜码电影 | 久久99深爱久久99精品 | 日韩欧美在线播放 | 成人国产精品一级毛片视频毛片 | 99精品国产一区二区青青牛奶 | 久草新在线 | 精品视频网 | 欧美成人一区二免费视频软件 | 国产精品a一区二区三区网址 | 午夜资源| 精品久久久久久久久久 | 成人国产精品久久 | 91视频进入 | 日日摸夜夜添夜夜添特色大片 | 欧美高清免费 | 久久久久久电影 | 在线成人 | 精品中文在线 | 日本免费在线 | 国产一级在线观看 | 精品视频在线免费观看 | 欧美成人免费在线视频 | 一本一道久久a久久精品综合 | 91久久精品 | 国产精品欧美一区喷水 | 一区二区视频 | 日本欧美国产在线观看 |