Spring Boot 常用注解

打印 上一主题 下一主题

主题 666|帖子 666|积分 1998

1. 启动类注解



  • @SpringBootApplication:

    • 它是 Spring Boot 的核心注解,包罗了 @SpringBootConfiguration、@EnableAutoConfiguration 和 @ComponentScan 三个注解。
    • @SpringBootConfiguration:标注当前类为配置类,雷同于 Spring 的 @Configuration 注解,用于配置 Spring Boot 应用的各种设置。
    • @EnableAutoConfiguration:开启 Spring Boot 的自动配置功能,根据项目依赖自动配置相关的 Bean。好比,假如项目依赖了 spring-boot-starter-web,它会自动配置 Spring MVC、Tomcat 等组件。
    • @ComponentScan: 扫描指定的包路径,寻找并注册相关的 Bean,好比 Controller、Service 等。
    示例:
    1. @SpringBootApplication
    2. public class MyApplication {
    3.     public static void main(String[] args) {
    4.         SpringApplication.run(MyApplication.class, args);
    5.     }
    6. }
    复制代码

2. 配置类注解



  • @Configuration:

    • 标注当前类为配置类,用于界说 Bean 和其他配置信息。
    • 可以用 @Bean 注解界说一个 Bean,并返回 Bean 实例。
    示例:
    1. @Configuration
    2. public class MyConfig {
    3.     @Bean
    4.     public MyService myService() {
    5.         return new MyServiceImpl();
    6.     }
    7. }
    复制代码

  • @ConfigurationProperties:

    • 将配置文件中的属性映射到 Java Bean 上,方便管理配置信息。
    • 可以使用 @Value 注解注入单个属性,但 @ConfigurationProperties 可以方便地将整个配置文件映射到 Bean 上。
    示例:
    1. @ConfigurationProperties(prefix = "my.app")
    2. public class MyAppProperties {
    3.     private String name;
    4.     private int port;
    5.     // getter and setter
    6. }
    7. @Configuration
    8. public class MyConfig {
    9.     @Bean
    10.     public MyAppProperties myAppProperties() {
    11.         return new MyAppProperties();
    12.     }
    13. }
    复制代码
    在 application.properties 中配置:
    1. my.app.name=My Application
    2. my.app.port=8080
    复制代码

  • @EnableConfigurationProperties:

    • 启用 @ConfigurationProperties 注解,答应将配置属性注入到 Bean 中。
    示例:
    1. @Configuration
    2. @EnableConfigurationProperties(MyAppProperties.class)
    3. public class MyConfig {
    4.    
    5.     // ...
    6. }
    复制代码

  • @PropertySource:

    • 指定配置文件的位置,可以加载多个配置文件。
    示例:
    1. @Configuration
    2. @PropertySource("classpath:my-config.properties")
    3. public class MyConfig {
    4.     // ...
    5. }
    复制代码

3. 控制器层注解



  • @RestController:

    • 标注当前类为一个 REST 控制器,返回 JSON 格式的数据。

  • @GetMapping、@PostMapping、@PutMapping、@DeleteMapping:

    • 用于处理差别类型的 HTTP 请求。
    • 雷同于 Spring MVC 的 @RequestMapping 注解,但更加简洁。
    示例:
    1. @RestController
    2. public class UserController {
    3.     @GetMapping("/users/{id}")
    4.     public User getUser(@PathVariable Long id) {
    5.         // ...
    6.     }
    7.     @PostMapping("/users")
    8.     public User createUser(@RequestBody User user) {
    9.         // ...
    10.     }
    11. }
    复制代码

  • @PathVariable、@RequestParam、@RequestBody:

    • 用于获取请求参数。
    • @PathVariable 用于获取 URL 中的路径变量。
    • @RequestParam 用于获取 URL 中的查询参数。
    • @RequestBody 用于获取请求体内容。

  • @ResponseBody:

    • 将返回值转换成 JSON 格式的数据,直接返回给客户端。
    • 在 @RestController 中默认使用 @ResponseBody,因此不需要显式声明。

4. 服务层注解



  • @Service:

    • 标注当前类为一个服务层类,用于界说业务逻辑。

  • @Transactional:

    • 开启事务管理,确保多个操纵的原子性。
    示例:
    1. @Service
    2. public class UserService {
    3.     @Transactional
    4.     public void updateUser(User user) {
    5.         // ...
    6.     }
    7. }
    复制代码

5. 实体类注解



  • @Entity:

    • 标注当前类为一个实体类,用于映射数据库中的表。

  • @Table:

    • 指定实体类映射的数据库表名。

  • @Id:

    • 标注主键字段。

  • @Column:

    • 指定字段名和数据类型。

  • @GeneratedValue:

    • 指定主键生成策略。
    示例:
    1. @Entity
    2. @Table(name = "users")
    3. public class User {
    4.     @Id
    5.     @GeneratedValue(strategy = GenerationType.IDENTITY)
    6.     private Long id;
    7.     @Column(name = "name")
    8.     private String name;
    9.     // ...
    10. }
    复制代码

6. 其他常用注解



  • @Autowired:

    • 自动注入依赖,雷同于 Spring 的 @Resource 注解。
    • 用于注入其他 Bean。
    示例:
    1. @Service
    2. public class UserService {
    3.     @Autowired
    4.     private UserRepository userRepository;
    5.     // ...
    6. }
    复制代码

  • @Component:

    • 标注当前类为一个组件,可以被 Spring 容器管理。
    示例:
    1. @Component
    2. public class MyComponent {
    3.     // ...
    4. }
    复制代码

  • @Qualifier:

    • 用于解决多个 Bean 辩说,指定要注入的 Bean 的名称。
    示例:
    1. @Service
    2. public class UserService {
    3.     @Autowired
    4.     @Qualifier("myUserRepository")
    5.     private UserRepository userRepository;
    6.     // ...
    7. }
    复制代码

  • @Value:

    • 注入配置文件中的属性值。
    示例:
    1. @Component
    2. public class MyComponent {
    3.     @Value("${my.app.name}")
    4.     private String appName;
    5.     // ...
    6. }
    复制代码

  • @Bean:

    • 在 @Configuration 类中,界说一个 Bean。
    示例:
    1. @Configuration
    2. public class MyConfig {
    3.     @Bean
    4.     public MyService myService() {
    5.         return new MyServiceImpl();
    6.     }
    7. }
    复制代码

  • @Import:

    • 导入其他配置类。
    示例:
    1. @SpringBootApplication
    2. @Import(MyConfig.class)
    3. public class MyApplication {
    4.     // ...
    5. }
    复制代码

7. Spring Data JPA 注解



  • @Repository:

    • 标注当前类为一个数据访问层类。

  • @Query:

    • 自界说 SQL 查询语句。

  • @Modifying:

    • 标注更新操纵。
    示例:
    1. @Repository
    2. public interface UserRepository extends JpaRepository<User, Long> {
    3.     @Query("SELECT u FROM User u WHERE u.name = :name")
    4.     User findByName(@Param("name") String name);
    5.     @Modifying
    6.     @Query("UPDATE User u SET u.name = :newName WHERE u.id = :id")
    7.     void updateName(@Param("id") Long id, @Param("newName") String newName);
    8. }
    复制代码

8. Spring Security 注解



  • @EnableWebSecurity:

    • 启用 Spring Security 的安全配置。

  • @PreAuthorize:

    • 授权验证,例如 @PreAuthorize("hasRole('ADMIN')")。

  • @Secured:

    • 授权验证,雷同于 @PreAuthorize。
    示例:
    1. @PreAuthorize("hasRole('ADMIN')")
    2. @GetMapping("/admin")
    3. public String adminPage() {
    4.     // ...
    5. }
    复制代码

9. Spring Cloud 注解



  • @EnableEurekaServer:

    • 启用 Eureka Server。

  • @EnableDiscoveryClient:

    • 启用服务注册和发现。

  • @FeignClient:

    • 声明一个 Feign 客户端。

  • @HystrixCommand:

    • 启用 Hystrix 熔断机制。
    示例:
    1. @FeignClient(name = "user-service")
    2. public interface UserServiceClient {
    3.     @GetMapping("/users/{id}")
    4.     User getUser(@PathVariable Long id);
    5. }
    复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

滴水恩情

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表