• 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 。

  • 相关阅读:
    C#Table转成json工具
    设置npm注册表配置为淘宝镜像
    总结js面向对象调用的几种模式
    gitHub初使用
    对象的防篡改
    offsetWidth clientWidth scrollWidth的区别
    js中的new操作符
    setTimeot与setInterval定时器
    事件捕获 事件冒泡和事件委托
    一个页面从输入URL到加载完成,发生什么事
  • 原文地址:https://www.cnblogs.com/burufeihua/p/13043601.html
Copyright © 2020-2023  润新知