Spring常用注解总结

  • 传统的Spring的开发是基于.xml文件开发,这样做当配置的Bean比较多,.xml文件将会变得越来越庞大,如果按照需求分开.xml文件,.xml文件又会变得越来越多导致可读性与可维护性变得很低。
  • 注解开发则会有效的减少配置文件,提高开发的效率。

1.@Autowired

自动装配,其作用是为了消除Java代码里面的getter/setter与bean属性中的property。当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。

2.@Qualifier(指定注入Bean的名称)

如果容器中有一个以上匹配的Bean,使用@Autowired系统不知道使用哪一个Bean则会报错,这时则可以通过@Qualifier注解限定Bean的名称,看下面的例子:
定义一个Car接口

public interface ICar {
    public String getCarName();
}

两个实现类BMWCar和BenzCar:

public class BMWCar implements ICar{
    
    public String getCarName(){
        return "BMW car";
    }
}

public class BenzCar implements ICar{
    
    public String getCarName(){
        return "Benz car";
    }
}

// 使用的时候就可以通过指定哪个实现类了
public class CarFactory {
    @Autowired
    @Qualifier("bmwCar")
    private ICar car;
    
    public String toString(){
        return car.getCarName();
    }
}

applicationContext.xml文件
在这里插入图片描述
此时,CarFactory 则就会根据@Qualifier(“bmwCar”)找到bmwCar子类从而不会报错。

3.@Resource

@Resource注解与@Autowired注解作用非常相似,@Autowired默认按类型装配(这个注解是属于spring的),默认情况下要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false。

@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定, 如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

4.@Service

用于标注服务层,主要用来进行业务的逻辑处理,在固定的路径下,比如com.book.service的包下,我们可以在spring.xml通过设置从而自动扫描com.book.service路径下所有注册@Service的类,不用在配置Bean,<context:component-scan base-package=“com.book.service” />

@Service
public class Zoo {
    @Autowired
    private Tiger tiger;
    @Autowired
    private Monkey monkey;  
    public String toString(){
        return tiger + "\n" + monkey;
    }
}

5.@Controller

用于标注控制层,相当于struts中的action层,用法类似于@Service。

6.@Component

泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

7.@Repository

@Repository对应数据访问层Bean 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值