开发常用注解

Java注解详解

偶然一次,被面试官问道,说说你都用过哪些注解,回忆起来,开发过程中真没少用到注解开发,但是还没有详细的总结过,故写下这篇随手笔记,有用到新的注解也会继续在这篇博客里更新


1、Entity实体类用到的

注解名称对应类注解说明
@DynamicUpdateHibernate默认是true,只更新改变了的字段,其他字段不更新。
@DynamicInsertHibernate默认是true,如果字段是null,不会写入插入语句。
@Entity 与数据库映射实体。
@Table name=”数据库表明”,将数据库表名与实体名字做映射。
@Id 

Id,标记主键(Spring-Data-Jpa规范中一定要有主键)

   
@JsonPropertyJackson将对象的属性序列化成注解中对应的名称
@JsonIgnoreJackson实体转Json时忽略
@Lob 数据库的数据类型是clob,实体类的是String,之间相互转换的注解

2、Lombok

注解名称注解类注解说明
@Slf4jLombok自动生成当前类logger,使用log.info();log.error();来使用。
@DataLombok注解在类上, 为类提供读、非final写属性, 此外还提供了 equals()、hashCode()、toString() 方法。
@NonNull Lombok注解在参数上, 如果该类参数为 null , 就会报出异常,  throw new NullPointException(参数名)。
@Getter/@Setter Lombok注解在类上, 为类提供读、非final写属性。
@EqualsAndHashCodeLombok注解在类上, 为类提供 equals() 和 hashCode() 方法。
@NoArgsConstructorLombok无参构造函数。
@RequiredArgsConstructorLombok指定必须参数构造函数。
@AllArgsConstructorLombok全参构造函数。

 

### Java 后端开发常用注解及其用途 #### 一、Spring框架中的注解 在Java后端开发中,尤其是基于Spring框架的应用程序里,有许多用于简化配置和增强功能的注解。 - **@Autowired** 这个注解用来自动装配依赖对象。可以放在字段上也可以放在构造函数或setter方法之上。它使得开发者不需要手动编写大量的get/set代码来注入bean实例[^1]。 - **@Controller/@RestController** `@Controller`通常应用于控制器层组件类上,表示该类是一个MVC架构下的控制层实现;而`@RestController`则是组合了@Controller和@ResponseBody两个注解的功能,可以直接返回JSON/XML等格式的数据给前端调用者。 - **@Service** 标识业务逻辑层的服务组件,在这里定义具体的业务操作流程和服务接口实现。 - **@Repository** 数据访问层使用的注解,标记持久化相关的DAO(Data Access Object)类。 - **@ComponentScan** 配置扫描路径以发现并注册带有@Component等相关注解声明的Bean到IoC容器内。 - **@RequestMapping** 映射HTTP请求至处理器的方法上,支持GET/POST等多种方式以及URL模板匹配等功能。 - **@GetMapping / @PostMapping** 更加具体化的版本映射规则,分别对应于处理GET和POST类型的HTTP请求。 ```java @RestController @RequestMapping("/api/users") public class UserController { private final UserService userService; @Autowired public UserController(UserService userService){ this.userService = userService; } @GetMapping("/{id}") public ResponseEntity<User> getUserById(@PathVariable Long id){ User user = userService.findById(id); return ResponseEntity.ok(user); } } ``` #### 二、JPA/Hibernate相关注解 当涉及到数据库交互时,JPA(Hibernate作为其实现之一)提供了丰富的元数据标注选项: - **@Entity** 定义实体类与表之间的关系,表明这是一个被管理的对象。 - **@Table(name="...")** 如果实体对应的表格名称不是默认情况下由@Entity所指定的名字,则可以通过@Table进一步自定义。 - **@Id** 表明这是主键属性。 - **@GeneratedValue(strategy=...) 主键生成策略设置,比如IDENTITY, AUTO等等。 - **@Column(nullable=false,...) 描述列特性,如是否允许为空(null),长度限制等。 - **@OneToMany,@ManyToOne,** etc. 关系型映射注解,用于表达一对多或多对一的关系模型。 ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(nullable = false, length = 50) private String name; // getters and setters... } ``` #### 三、其他重要注解 除了上述提到的内容外还有一些通用性的注解也十分有用: - **@Override** 当子类重写父类的方法时使用此注解,有助于编译器检查错误,并提高可读性和维护性。 - **@Deprecated** 提醒程序员某个API已经被弃用了,建议寻找替代方案。 - **@SuppressWarnings("unchecked")** 抑制特定警告信息,常用于泛型编程场景下避免不必要的告警提示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值