Spring常用注解总结
Posted burufeihua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring常用注解总结相关的知识,希望对你有一定的参考价值。
1.传统的Spring的开发是基于.xml文件开发,这样做当配置的Bean比较多,.xml文件将会变得越来越庞大,如果按照需求分开.xml文件,.xml文件又会变得越来越低可读性与可维护性变得很低。
2.注解开发则会有效的减少配置文件,提高开发的效率。
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 + " " + monkey; } }
5、@Controller
用于标注控制层,相当于struts中的action层,用法类似于@Service。
6、@Component
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
7、@Repository
@Repository对应数据访问层Bean 。
以上是关于Spring常用注解总结的主要内容,如果未能解决你的问题,请参考以下文章