详述 @Service 和 @Resource 注解的区别

1 前言

在我们使用 Spring 框架的时候,注解是“不可或缺”的一部分,它帮我们脱离了配置繁琐的 XML 文件的工作,但有一点却需要我们自己去把握,那就是“3何”,即“何时何地用何注解?”在本篇博文中,作者就简单介绍一下如何恰当的使用@Service@Resource这两个注解。

2 注解

2.1 @Service

当我们需要定义某个类为一个bean的时候,就可以在这个类的类名上一行加一个@Service注解,即

@Service("common")
public class CommonService(){
	public static void sayHi(){
		System.out.println("Hi,CG!");
	}
}

在这里,@Service("XXX"),就相当于将这个类定义为一个bean,其中XXX即为bean的名称。此外,我们只用此注解标记bean,如果不填value的话,则 Spring 生成的bean名称是取类名,然后将首字母小写。

2.2 @Resource

当我们需要在某个类中定义一个属性,并且该属性是一个已存在的bean,在为该属性赋值或注入的时候,就需要在该属性的上一行添加一个@Resource注解,即

@Service
public class CommonService(){

	@Resource(name="common")
	private Common common;
	
	public static void sayHi(){
		System.out.println("Hi,CG!");
	}
}

在这里,@Resource(name="XXX")就相当于为该属性注入一个名称为XXXbean,一般会省略name属性。

3 引申

在 Spring 2.5 中,其为我们提供了丰富的注解,在此介绍四个常用的注解:

  • @Service,用于标注业务层组件(通常定义的 Service 层就用这个注解);
  • @Controller,用于标注控制层组件(如 Struts 中的 action);
  • @Repository,用于标注数据访问组件,即 DAO 层组件;
  • @Component,泛指组件,当组件不好归类的时候,我们就可以用这个注解进行标注。

以上这四个注解都是基于类的,我们可以定义名称,也可以不定义名称。在不定义名称的时候,Spring 就会默认以类名且首字母小写的词组为bean的名称。此外,大家还可以通过阅读「详述 @Autowired 和 @Resource 注解的区别」,了解@Autowired@Resource注解的区别。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安正勋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值