您的位置:首页 > 汽车 > 新车 > Spring Boot 常用注解

Spring Boot 常用注解

2024/12/29 1:38:01 来源:https://blog.csdn.net/DaPiCaoMin/article/details/139515645  浏览:    关键词: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 {@Beanpublic 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 {@Beanpublic 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 {@Transactionalpublic 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 {@Autowiredprivate 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 {@Beanpublic 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);
    }
    

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com