zoukankan      html  css  js  c++  java
  • spring 中的一些注解功能--不定更新

    1@Qualifier注解?

    下面的示例将会在Customer的person属性中自动装配Person的值。

    1 public class Customer
    2 {
    3     @Autowired
    4     private Person person;
    5 }

    下面我们要在配置文件中来配置Person类。

    1 <bean id="customer" class="com.howtodoinjava.common.Customer" />
    2  
    3 <bean id="personA" class="com.qinkang.common.Person" >
    4     <property name="name" value="lokesh" />
    5 </bean>
    6  
    7 <bean id="personB" class="com.qinkang.common.Person" >
    8     <property name="name" value="alex" />
    9 </bean>

    Spring会知道要自动装配哪个person bean么?不会的,但是运行上面的示例时,会抛出下面的异常:

    Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
        No unique bean of type [com.howtodoinjava.common.Person] is defined:
            expected single matching bean but found 2: [personA, personB]

    要解决上面的问题,需要使用 @Quanlifier注解来告诉Spring容器要装配哪个bean:

    1 public class Customer
    2 {
    3     @Autowired
    4     @Qualifier("personA")
    5     private Person person;
    6 }

    2请举例解释@Required注解?

    在产品级别的应用中,IoC容器可能声明了数十万了bean,bean与bean之间有着复杂的依赖关系。设值注解方法的短板之一就是验证所有的属性是否被注解是一项十分困难的操作。可以通过在<bean>中设置“dependency-check”来解决这个问题。

    在应用程序的生命周期中,你可能不大愿意花时间在验证所有bean的属性是否按照上下文文件正确配置。或者你宁可验证某个bean的特定属性是否被正确的设置。即使是用“dependency-check”属性也不能很好的解决这个问题,在这种情况下,你需要使用@Required 注解。

     需要用如下的方式使用来标明bean的设值方法。
     1 public class EmployeeFactoryBean extends AbstractFactoryBean<Object>
     2 {
     3     private String designation;
     4  
     5     public String getDesignation() {
     6         return designation;
     7     }
     8  
     9     @Required
    10     public void setDesignation(String designation) {
    11         this.designation = designation;
    12     }
    13  
    14     //more code here
    15 }

    Spring中的后置处理用来验证被@Required 注解的bean属性是否被正确的设置了。

    20、请举例解释@Autowired注解?

    @Autowired注解对自动装配何时何处被实现提供了更多细粒度的控制。@Autowired注解可以像@Required注解、构造器一样被用于在bean的设值方法上自动装配bean的属性,一个参数或者带有任意名称或带有多个参数的方法。

    比如,可以在设值方法上使用@Autowired注解来替代配置文件中的 <property>元素。Spring容器在setter方法上找到@Autowired注解时,会尝试用byType 自动装配。

    当然我们也可以在构造方法上使用@Autowired 注解。带有@Autowired 注解的构造方法意味着在创建一个bean时将会被自动装配,即便在配置文件中使用<constructor-arg> 元素。

  • 相关阅读:
    linux-gcc 编译时头文件和库文件搜索路径
    程序自启动位置(8种方法,注册表有6处)
    谷歌、flick网站图片 一次性下载 javaWeb项目 多线程下载,
    部署vc2008开发的程序(vcredist_x86是其中一个办法)
    vs2012-vs2013编译出来的程序不能在xp上运行解决方法
    openssl编译
    libcurl编译
    qt 国际化(翻译时会触发changeEvent)
    uva 12100 Printer Queue 优先级队列模拟题 数组模拟队列
    qtcreator增加doxygen注释
  • 原文地址:https://www.cnblogs.com/smellpawn/p/10800755.html
Copyright © 2011-2022 走看看