java 开发常用框架的高级注解使用汇总及对应demo演示
以下是 Java 开发常用框架的高级注解使用汇总及对应 demo 演示:
Spring 核心注解
1. @Component
、@Service
、@Repository
、@Controller
- 作用:定义 Spring 管理的 Bean,区分业务层、数据层、控制层等[1][3][5]。
- Demo:
// Service 层 @Service public class OrderService { /* 业务逻辑 */ }// DAO 层 @Repository public interface UserRepository extends JpaRepository<User, Long> { /* 数据访问 */ }// 控制层 @Controller public class UserController { /* HTTP 请求处理 */ }
2. @Autowired
- 作用:自动注入依赖的 Bean,默认按类型匹配[1][3][5]。
- Demo:
@Service public class UserService {private final UserRepository userRepository; // 自动注入 DAO 层 Bean@Autowiredpublic UserService(UserRepository userRepository) {this.userRepository = userRepository;} }
3. @Qualifier
- 作用:当存在多个同类型 Bean 时,指定注入的具体 Bean[1][3]。
- Demo:
@Autowired @Qualifier("primaryOrderService") // 指定 Bean 名称 private OrderService orderService;
4. @Value
- 作用:从配置文件中注入值到字段[1][4]。
- Demo:
@Configuration @PropertySource("classpath:application.properties") public class PropertyConfig {@Value("${app.name}") // 注入属性值private String appName; }
5. @Transactional
- 作用:声明方法或类使用事务管理,确保数据一致性[1][4]。
- Demo:
@Service public class PaymentService {@Transactional(rollbackFor = Exception.class) // 事务回滚条件public void processPayment(Payment payment) {// 支付逻辑} }
6. @PostConstruct
/ @PreDestroy
- 作用:在 Bean 初始化后执行初始化逻辑;在 Bean 销毁前执行资源清理逻辑[3][5]。
- Demo:
@Component public class DataInitializer {@PostConstruct // 初始化时执行public void init() {System.out.println("初始化数据...");}@PreDestroy // 销毁前执行public void cleanup() {System.out.println("清理资源...");} }
7. @Scope
- 作用:指定 Bean 的作用域(单例、原型、请求、会话等)[5][6]。
- Demo:
@Scope("prototype") // 每次请求生成新实例 @Component public class RequestScopedBean { /* ... */ }
Spring MVC 注解
1. @RestController
- 作用:组合
@Controller
和@ResponseBody
,直接返回 JSON/XML 数据[4][6]。 - Demo:
@RestController @RequestMapping("/api/users") public class UserApi {@GetMapping("/{id}") // 处理 GET 请求public User getUser(@PathVariable Long id) { /* ... */ }@PostMapping // 处理 POST 请求public User createUser(@RequestBody User user) { /* ... */ } }
2. @RequestParam
/ @PathVariable
/ @RequestBody
- 作用:绑定请求参数到方法参数[4][6]。
- Demo:
@GetMapping("/search") public List<User> search(@RequestParam(defaultValue = "1") int page, // 查询参数@PathVariable Long id, // URL 路径变量@RequestBody UserQuery query // 请求体参数 ) { /* ... */ }
MyBatis-Plus 注解
1. @TableName
- 作用:指定数据库表名[4]。
- Demo:
@TableName("sys_user") // 映射到 sys_user 表 @Data public class User { /* ... */ }
2. @TableId
- 作用:定义主键及其生成策略[4]。
- Demo:
@TableId(type = IdType.AUTO) // 自增主键 private Long id;
3. @Version
- 作用:乐观锁控制,防止并发冲突[4]。
- Demo:
@Version // 乐观锁字段 private Integer version;
Swagger 注解
1. @Api
/ @ApiOperation
- 作用:生成 API 文档并描述接口功能[4]。
- Demo:
@Api(tags = "用户管理") // 控制器分组描述 @RestController public class UserController {@ApiOperation("根据 ID 查询用户") // 接口方法描述@GetMapping("/{id}")public User getUser(@PathVariable Long id) { /* ... */ } }
JPA/Hibernate 注解
1. @Entity
/ @Table
- 作用:声明 JPA 实体并指定数据库表[4]。
- Demo:
@Entity @Table(name = "users") // 映射到 users 表 public class User { /* ... */ }
2. @GeneratedValue
- 作用:定义主键生成策略[4]。
- Demo:
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) // 自增主键 private Long id;
3. @Column
- 作用:定义字段与数据库列的映射关系[4]。
- Demo:
@Column(name = "user_name", length = 50) // 映射到 user_name 列 private String userName;
Lombok 注解
1. @Data
- 作用:自动生成 getter、setter、
toString
、equals
、hashCode
等方法[2][4]。 - Demo:
@Data public class User {private String name;private int age; }
2. @Builder
- 作用:提供建造者模式,简化对象创建[4]。
- Demo:
@Builder public class User {private String name;private int age; } // 使用方式:User user = User.builder().name("Alice").age(20).build();
其他实用注解
1. @Slf4j
- 作用:自动注入日志对象(如
log.info()
)[2]。 - Demo:
@Slf4j public class UserService {public void doSomething() {log.info("正在执行操作...");} }
2. @AllArgsConstructor
/ @NoArgsConstructor
- 作用:自动生成全参/无参构造器[4]。
- Demo:
@AllArgsConstructor @NoArgsConstructor public class User {private String name;private int age; }
Spring Boot 特有注解
1. @SpringBootApplication
- 作用:启动类注解,组合了
@Configuration
、@EnableAutoConfiguration
、@ComponentScan
[8]。 - Demo:
@SpringBootApplication public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);} }
2. @ConfigurationProperties
- 作用:批量绑定配置文件中的属性到对象[4]。
- Demo:
@ConfigurationProperties(prefix = "app") public class AppConfig {private String name;private int timeout;// getters and setters }
综上所述,Java开发常用框架提供了丰富的高级注解,涵盖Spring核心、MVC、MyBatis-Plus等多个方面。通过运用这些注解,可以显著提升开发效率、简化代码、增强可维护性,并充分利用框架的特性来实现各种功能需求。