码迷,mamicode.com
首页 > 编程语言 > 详细

Spring常用注解总结

时间:2020-06-04 15:23:05      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:struts   key   inf   alt   set   服务层   text   注意   code   

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 + "\n" + monkey;
    }
    
}

5、@Controller

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

6、@Component

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

7、@Repository

@Repository对应数据访问层Bean 。

 

Spring常用注解总结

标签:struts   key   inf   alt   set   服务层   text   注意   code   

原文地址:https://www.cnblogs.com/burufeihua/p/13043601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!