spring下的几种注解

spring中存在以下几种常见的注解:

@Component、@Repository、@Service、@Controller、@Resource、@Autowired、@Qualifier

注解说明:

|- - -| @Repository: 用于标注数据访问组件,即DAO组件。

|- - -| @Service: 用于标注业务层组件(我们通常定义的service层就用这个)。

|- - -| @Contrller: 用于标注控制层组件

|- - -| @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

以上几个注解是当你需要定义某个类为一个bean,则在这个类的类名前一行使用以上注解中的一种,如@Service(“XXX”),就相当于将此类定义为一个bean,bean名称为XXX; 这几个是基于类的,我们可以定义名称,也可以不定义,不定义会默认以类名为bean的名称(类首字母小写)。

注解使用

当我们需要在某个类中定义被注解标注的类作为一个属性时,我们则要使用以下三个注解:

@Resource、@Autowired、@Qualifier

再讲解使用之前,先编写几个类:

//控制层
@controller
public class TestController
{
    public void say()
    {
        System.out.println("I am a good boy");
    }
}
//service层
@service
public class TestService
{
    @Resource
    private Dao Dao;
    public void add(){
        Dao.add();
    }
//定义Dao接口
public interface Dao {
    public void add();
}
//定义实现DAO类,DAO层
@Repository
public class DaoImpl implements Dao{
    public void add(){
        System.out.println("调用了dao");
    }
}

回到前面说的,当需要在某个类中定义被注解的类作为属性时,我们则可以使用@Resource或@AutoWired,比如

@Resource
private Dao dao;
@Autowired
private Dao dao;

它们的区别如下:

@Resource,它是javax.annotation.Resource; 这个包中,也就是说是javaEE中的,并不是spring中的,而且@Resource(“xxx”) 是可以定义bean名称的,就是说我这个属性要用那个bean来赋值。

@Autowired,它是org.springframework.beans.factory.annotation.Autowired 是这个包中,它是spring的包中的,而且它没有@Autowired(“xxx”),那我要为这个bean定义名称怎么办这个时候可以用@Qualifier(“xxx”), 这个也是spring中的。

我们在定义一个Dao的实现类DaoImpl2

@Repository
public class DaoImpl2 implements Dao{
    public void add(){
        System.out.println("调用了dao2");
    }
}

此时,如果我们要使用DaoImpl2作为一个类的属性时,则必须要写成如下形式

@Resource
private Dao daoImpl2;

当被注解的类指定名称时,也就是@Repository(“???”)时,则我们必须写成如下形式

@Resource
private Dao ???;

也就是说,定义的属性名称必须与@Repository(“???”)中的名称保持一致。

另一种写法是:

@Resource(???)
private Dao * * *;

@AutoWired
@Qualifier(???)
private Dao * * *;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

行动π技术博客

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

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

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

打赏作者

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

抵扣说明:

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

余额充值