Java中常用注解

1、简介:

Java 中的注解(Annotations)是一种元数据,可以附加到 Java 类、方法、局部变量、参数等上,以提供额外的信息。Java 自从引入注解特性以来,已经被广泛应用于各种框架和工具中,用于增强代码的功能性或者简化开发工作。

2、标准注解 (Standard Annotations)

2-1、@Override:表明一个方法重写了父类的方法
@Override
public void someMethod() {
    // 方法体
}
2-2、@SuppressWarnings:用来抑制警告信息
@SuppressWarnings("unchecked")
public void unsafeOperation() {
    // 方法体
}
2-3、@SafeVarargs:用来标记方法或构造函数,表明它们可以安全地接受方差类型的参数
@Override
public void someMethod() {
    // 方法体
}

2、元注解(Meta-Annotations)

2-1、@Retention:指定注解的生命周期
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {}
2-2、@Target:指定注解适用的目标类型
@Target(ElementType.METHOD)
public @interface MyMethodAnnotation {}
2-3、@Documented:表明该注解应该被包含在 javadoc 中
@Documented
public @interface MyDocAnnotation {}
2-4、@Inherited:使子类能够继承父类上的注解
@Inherited
public @interface InheritedAnnotation {}

3、SpringBoot 常用注解

SpringBoot 介绍
Spring Boot 是一个基于 Spring 框架的快速应用开发平台,它简化了 Spring 应用的初始搭建以及开发过程。Spring Boot 使用了大量的注解来实现其功能,下面列出了一些在 Spring Boot 开发中常用的注解及其用途:
3-1、组件扫描与自动装配
3-1-1、@SpringBootApplication:这是一个组合注解,包含了 @SpringBootConfiguration, @EnableAutoConfiguration, @ComponentScan。通常用于启动类上,标识这是一个 Spring Boot 应用
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
3-1-2、@SpringBootConfiguration:表示这是一个 Spring 配置类,类似于 @Configuration
@SpringBootConfiguration
public class AppConfig {
    // 配置类中的@Bean方法
}
3-1-3、@ComponentScan:用于扫描带有 @Component 或其派生注解(如 @Service, @Repository, @Controller)的类
@SpringBootApplication(scanBasePackages = {"com.example.package"})
public class Application {
    // ...
}
3-1-4、@EnableAutoConfiguration:启用自动配置,让 Spring Boot 根据类路径上的 jar 包自动配置 Bean。
@SpringBootApplication(scanBasePackages = {"com.example.package"})
public class Application {
    // ...
}
3-1-5、@Autowired:自动装配 Bean。
@Service
public class ServiceImpl {
    @Autowired
    private Repository repository;
}
3-1-6、@Qualifier:与 @Autowired 结合使用,精确指定注入哪个 Bean。
@Autowired
@Qualifier("myBean")
private MyBean myBean;
3-2、控制器与 RESTful API
3-2-1、@Controller:标记一个类作为控制器类,处理 HTTP 请求。
@Controller
public class MyController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello World!";
    }
}
3-2-2、@RestController:组合了 @Controller@ResponseBody,用于直接返回 JSON 数据。
@RestController
public class MyRestController {
    @GetMapping("/api/hello")
    public String hello() {
        return "Hello World!";
    }
}
3-2-3、@RequestMapping:映射请求到方法上。
@Controller
public class MyController {
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello() {
        return "Hello World!";
    }
}
3-2-4、@GetMapping, @PostMapping, @PutMapping, @DeleteMapping:更具体的请求映射注解。
@RestController
public class MyRestController {
    @GetMapping("/api/hello")
    public String getHello() {
        return "GET Hello World!";
    }

    @PostMapping("/api/hello")
    public String postHello() {
        return "POST Hello World!";
    }
}
3-2-5、@PathVariable:获取 URL 路径中的变量。
@GetMapping("/users/{id}")
public String getUser(@PathVariable String id) {
    return "User ID is " + id;
}
3-2-6、@RequestParam:获取请求参数。
@GetMapping("/users")
public String getUsers(@RequestParam String name) {
    return "User Name is " + name;
}
3-2-7、@RequestBody:接收请求体中的数据。
@PostMapping("/users")
public String createUser(@RequestBody User user) {
    return "Created User with ID " + user.getId();
}
3-2-8、@ResponseBody:将方法的返回值直接写入 HTTP 响应体。
@GetMapping("/hello")
@ResponseBody
public String hello() {
    return "Hello World!";
}
3-3、数据访问层
3-3-1、@Repository:标记一个类作为 DAO 层。
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    User findByUsername(String username);
}
3-3-2、@Transactional:用于方法或类,声明事务边界。
@Service
public class UserService {
    @Transactional
    public void createUser(User user) {
        // 创建用户的逻辑
    }
}

posted on 2024-09-22 09:38  cloud_wh  阅读(23)  评论(0编辑  收藏  举报

导航