一些常见的注解的含义总结

本文详细介绍了Spring框架中的核心注解,包括@Controller、@Service、@Repository及@Component的功能与应用场景;同时深入探讨了Lombok插件中@Data、@AllArgsConstructor、@NoArgsConstructor与@Builder注解的使用方法,旨在简化Java开发过程中的代码书写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、@controller 控制器(注入服务)
用于标注控制层,相当于struts中的action层

2、@service 服务(注入dao)
用于标注服务层,主要用来进行业务的逻辑处理

3、@repository(实现dao访问)
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件.

4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的 
<bean id="" class=""/>
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

说明: 
<context:component-scan base-package=”com.*”> 
上面的这个例子是引入Component组件的例子,其中base-package表示为需要扫描的所有子包。 
共同点:被@controller 、@service、@repository 、@component 注解的类,都会把这些类纳入进spring容器中进行管理

------------------------------------------lombok相关注解----------------------------------------------

lombok是一款在java开发中简洁化代码十分有用的插件工具,这篇博客对较为常用的几种注解进行记录,分享学习心得。

使用lombok注解,目的和作用就在于不用再去写经常反复去写的(如Getter,Setter,Constructor等)一些代码了。

首先,用到的几个注解:

  • @Data
    使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去。
  • @AllArgsConstructor
    使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数
  • @NoArgsConstructor
    使用后创建一个无参构造函数
  • @Builder
    关于Builder较为复杂一些,Builder的作用之一是为了解决在某个类有很多构造函数的情况,也省去写很多构造函数的麻烦,在设计模式中的思想是:用一个内部类去实例化一个对象,避免一个类出现过多构造函数,

----------------------------------------------------------------------------------------------------------

@JsonFormat@JSONField@DateTimeFormat的使用以及其区别

1、JsonFormat来源于jackson,Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。Jackson所依赖的jar包较少,简单易用并且性能也要相对高些,并且Jackson社区相对比较活跃,更新速度也比较快。

2、JSONField来源于fastjson,是阿里巴巴的开源框架,主要进行JSON解析和序列化。

3、DateTimeFormat是spring自带的处理框架,主要用于将时间格式化。

-------------------------------------------mybatis相关注解------------------------------------------------------------------------------

1.@SelectProvider(type=xxxx.class,method=”xxxx”)

用自定义的provider类构造SQL语句

type 属性用于指定获取sql语句的指定类

method 属性用于指定类中要执行获取sql语句的方法

### Spring 中 @Qualifier 注解的作用 `@Qualifier` 是 Spring 框架中的一个重要注解,主要用于解决依赖注入过程中可能出现的歧义性问题。当容器中有多个相同类型的 Bean 存在时,仅靠 `@Autowired` 或者构造器注入无法明确指定哪一个 Bean 应该被注入到目标字段或方法中。此时可以通过 `@Qualifier` 来进一步限定具体的 Bean 实例[^1]。 #### 使用场景 以下是常见的使用场景: 1. **多同类型 Bean 的情况下** 如果项目中定义了多个相同类型的 Bean(例如有多个实现类实现了同一个接口),那么在自动装配这些 Bean 时可能会引发冲突。通过 `@Qualifier` 可以显式指明需要哪个特定的 Bean 被注入。 2. **复杂数据结构的注入** 对于一些复杂的集合类型(如 List、Set 和 Map),也可以利用 `@Qualifier` 配合自定义名称来区分不同的 Bean 并完成精准注入[^3]。 --- ### 示例代码展示 下面是一个简单的例子说明如何使用 `@Qualifier` 注解: ```java // 定义两个相同的 User 类型 Bean @Bean @Qualifier("user1") public User user1() { return new User("Alice"); } @Bean @Qualifier("user2") public User user2() { return new User("Bob"); } ``` 接着,在需要注入的地方可以这样操作: ```java @Component public class UserService { @Autowired @Qualifier("user1") // 明确指出要注入的是名为 "user1" 的 Bean private User user; public void displayUserInfo() { System.out.println(user.getName()); } } ``` 如果采用基于字段名的方式,则可以直接写成如下形式: ```java @Resource(name = "user1") // 这里同样能够达到效果,不过它是 Javax 提供的标准而非 Spring 自带功能 private User user; ``` 需要注意的是,虽然上面提到可以用 `@Resource` 替代部分场合下的 `@Qualifier + @Autowired` 组合,但是两者本质上有所区别——前者依据属性名字查找资源而后者更倾向于按照类型匹配再辅以额外条件筛选[^2]。 --- ### 总结 综上所述,`@Qualifier` 主要是用来辅助 Spring IoC 容器做更为精细粒度上的控制,特别是在面临多种候选对象待选的情况下显得尤为重要。它不仅限于单个实体类实例的选择,还可以扩展应用于各种集合形态的数据处理之中,从而让整个应用程序逻辑变得更加灵活可控且便于后期维护管理[^3]。 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值