滴水恩情 发表于 2024-6-15 02:28:44

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);
}


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Spring Boot 常用注解