final和@Autowired以及@Resource的区别

1、@Autowired

  • 来源:Spring框架特有的注解。
  • 匹配方式:默认按照类型(byType)进行自动装配。如果找到多个相同类型的Bean,则会根据名称(byName)进一步匹配。
  • 使用场景:适用于Spring管理的Bean之间的依赖注入。
  • 灵活性:可以通过@Qualifier注解来指定具体的Bean名称,以解决类型匹配冲突的问题。

示例:

@Autowired
private MyService myService;

@Autowired
@Qualifier("specificMyService")
private MyService anotherMyService;

2、@Resource

  • 来源:JSR-250标准的一部分,Java标准注解。
  • 匹配方式:默认按照名称(byName)进行自动装配,如果找不到对应的名称,则会尝试按照类型(byType)进行匹配。
  • 使用场景:适用于任何支持JSR-250标准的容器,不仅仅是Spring。
  • 灵活性:可以通过名称属性来指定具体的Bean名称。

示例:

@Resource(name="myService")
private MyService myService;

3、final修饰符

  • 作用final是一个关键字,用于声明一个不可改变的实体。它可以用来修饰类、方法和变量。
    • :被final修饰的类不能被继承。
    • 方法:被final修饰的方法不能被重写。
    • 变量:被final修饰的变量只能被赋值一次,之后其值不能被改变(常量)。
  • 使用场景:主要用于确保某些代码的不可变性和安全性,例如常量值、不可继承的类或不可重写的方法。

示例:

4、总结

  • final是一个Java语言的关键字,用于声明不可变的实体,与Spring框架无关。
  • @Autowired是一个Spring框架的注解,用于实现依赖注入,与Java语言的不可变性无关。默认按照类型进行匹配,可以通过@Qualifier指定名称。
  • @Resource是Java标准注解,默认按照名称进行匹配,找不到名称时会尝试按照类型匹配。

注:final和@RequiredArgsConstructor搭配使用,一般应用于微服务之间的互相调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值