Spring Boot 常用注解

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 等。

    示例:

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

2. 配置类注解

  • @Configuration:

    • 标注当前类为配置类,用于定义 Bean 和其他配置信息。
    • 可以用 @Bean 注解定义一个 Bean,并返回 Bean 实例。

    示例:

    @Configuration
    public class MyConfig {
    
        @Bean
        public MyService myService() {
            return new MyServiceImpl();
        }
    }
    
  • @ConfigurationProperties:

    • 将配置文件中的属性映射到 Java Bean 上,方便管理配置信息。
    • 可以使用 @Value 注解注入单个属性,但 @ConfigurationProperties 可以方便地将整个配置文件映射到 Bean 上。

    示例:

    @ConfigurationProperties(prefix = "my.app")
    public class MyAppProperties {
        private String name;
        private int port;
    
        // getter and setter
    }
    
    @Configuration
    public class MyConfig {
    
        @Bean
        public MyAppProperties myAppProperties() {
            return new MyAppProperties();
        }
    }
    

    application.properties 中配置:

    my.app.name=My Application
    my.app.port=8080
    
  • @EnableConfigurationProperties:

    • 启用 @ConfigurationProperties 注解,允许将配置属性注入到 Bean 中。

    示例:

    @Configuration
    @EnableConfigurationProperties(MyAppProperties.class)
    public class MyConfig {
        
        // ...
    }
    
  • @PropertySource:

    • 指定配置文件的位置,可以加载多个配置文件。

    示例:

    @Configuration
    @PropertySource("classpath:my-config.properties")
    public class MyConfig {
        // ...
    }
    

3. 控制器层注解

  • @RestController:

    • 标注当前类为一个 REST 控制器,返回 JSON 格式的数据。
  • @GetMapping、@PostMapping、@PutMapping、@DeleteMapping:

    • 用于处理不同类型的 HTTP 请求。
    • 类似于 Spring MVC 的 @RequestMapping 注解,但更加简洁。

    示例:

    @RestController
    public class UserController {
    
        @GetMapping("/users/{id}")
        public User getUser(@PathVariable Long id) {
            // ...
        }
    
        @PostMapping("/users")
        public User createUser(@RequestBody User user) {
            // ...
        }
    }
    
  • @PathVariable、@RequestParam、@RequestBody:

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

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

4. 服务层注解

  • @Service:

    • 标注当前类为一个服务层类,用于定义业务逻辑。
  • @Transactional:

    • 开启事务管理,确保多个操作的原子性。

    示例:

    @Service
    public class UserService {
    
        @Transactional
        public void updateUser(User user) {
            // ...
        }
    }
    

5. 实体类注解

  • @Entity:

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

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

    • 标注主键字段。
  • @Column:

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

    • 指定主键生成策略。

    示例:

    @Entity
    @Table(name = "users")
    public class User {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
    
        @Column(name = "name")
        private String name;
    
        // ...
    }
    

6. 其他常用注解

  • @Autowired:

    • 自动注入依赖,类似于 Spring 的 @Resource 注解。
    • 用于注入其他 Bean。

    示例:

    @Service
    public class UserService {
    
        @Autowired
        private UserRepository userRepository;
    
        // ...
    }
    
  • @Component:

    • 标注当前类为一个组件,可以被 Spring 容器管理。

    示例:

    @Component
    public class MyComponent {
        // ...
    }
    
  • @Qualifier:

    • 用于解决多个 Bean 冲突,指定要注入的 Bean 的名称。

    示例:

    @Service
    public class UserService {
    
        @Autowired
        @Qualifier("myUserRepository")
        private UserRepository userRepository;
    
        // ...
    }
    
  • @Value:

    • 注入配置文件中的属性值。

    示例:

    @Component
    public class MyComponent {
    
        @Value("${my.app.name}")
        private String appName;
    
        // ...
    }
    
  • @Bean:

    • @Configuration 类中,定义一个 Bean。

    示例:

    @Configuration
    public class MyConfig {
    
        @Bean
        public MyService myService() {
            return new MyServiceImpl();
        }
    }
    
  • @Import:

    • 导入其他配置类。

    示例:

    @SpringBootApplication
    @Import(MyConfig.class)
    public class MyApplication {
    
        // ...
    }
    

7. Spring Data JPA 注解

  • @Repository:

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

    • 自定义 SQL 查询语句。
  • @Modifying:

    • 标注更新操作。

    示例:

    @Repository
    public interface UserRepository extends JpaRepository<User, Long> {
    
        @Query("SELECT u FROM User u WHERE u.name = :name")
        User findByName(@Param("name") String name);
    
        @Modifying
        @Query("UPDATE User u SET u.name = :newName WHERE u.id = :id")
        void updateName(@Param("id") Long id, @Param("newName") String newName);
    }
    

8. Spring Security 注解

  • @EnableWebSecurity:

    • 启用 Spring Security 的安全配置。
  • @PreAuthorize:

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

    • 授权验证,类似于 @PreAuthorize

    示例:

    @PreAuthorize("hasRole('ADMIN')")
    @GetMapping("/admin")
    public String adminPage() {
        // ...
    }
    

9. Spring Cloud 注解

  • @EnableEurekaServer:

    • 启用 Eureka Server。
  • @EnableDiscoveryClient:

    • 启用服务注册和发现。
  • @FeignClient:

    • 声明一个 Feign 客户端。
  • @HystrixCommand:

    • 启用 Hystrix 熔断机制。

    示例:

    @FeignClient(name = "user-service")
    public interface UserServiceClient {
        @GetMapping("/users/{id}")
        User getUser(@PathVariable Long id);
    }
    

相关推荐

  1. SpringBoot注解

    2024-06-08 08:02:03       39 阅读
  2. springBoot 注解

    2024-06-08 08:02:03       17 阅读
  3. springboot注释

    2024-06-08 08:02:03       11 阅读
  4. SpringBoot项目中注解总结

    2024-06-08 08:02:03       17 阅读
  5. SpringBoot20个注解及其作用

    2024-06-08 08:02:03       13 阅读
  6. SpringMVC注解

    2024-06-08 08:02:03       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 08:02:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 08:02:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 08:02:03       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 08:02:03       20 阅读

热门阅读

  1. Ajax + Easy Excel 通过Blob实现导出excel

    2024-06-08 08:02:03       9 阅读
  2. ARCGIS 几种SHP融合、拼接等方法

    2024-06-08 08:02:03       8 阅读
  3. 【微信小程序】连接蓝牙设备

    2024-06-08 08:02:03       11 阅读
  4. amis 事件动作 和 行为按钮 常用用法

    2024-06-08 08:02:03       11 阅读
  5. TensorFlow 张量

    2024-06-08 08:02:03       10 阅读
  6. uni-app的生命周期(应用,页面生命周期)

    2024-06-08 08:02:03       10 阅读