python 网站框架,什邡门户网站,wordpress教程哪本好,盘锦门户网站制作按类型自动装配可能多个bean实例的情况#xff0c;可以使用Spring的Qualifier注解缩小范围#xff08;或指定唯一#xff09;#xff0c;也可以指定单独的构造器参数或方法参数可用于注解集合类型变量例子#xff1a; package com.mypackage;import org.springframework.b…按类型自动装配可能多个bean实例的情况可以使用Spring的Qualifier注解缩小范围或指定唯一也可以指定单独的构造器参数或方法参数可用于注解集合类型变量例子 package com.mypackage;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;public class MovieRecommender {AutowiredQualifier(main)private MovieCatalog movieCatalog;}package com.mypackage;import org.springframework.beans.factory.annotation.Qualifier;public class MovieRecommender {private MovieCatalog movieCatalog;public void prepare(Qualifier(main)MovieCatalog movieCatalog){this.movieCatalogmovieCatalog;}}PS应用于构造器的方法比较常用 XML文件中使用qualifier: ?xml version1.0 encodingUTF-8?beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.1.xsdcontext:component-scan base-packagecom.multibean/context:component-scan bean classcom.mypackage.MovieCatalogqualifier valuemain/qualifier/beanbean classcom.mypackage.MovieCatalogqualifier valueaction/qualifier/bean
/beans如果通过名字进行注解注入主要使用的不是Autowired(即使在技术上能够通过Qualifier指定bean的名称)替代方式是使用JSR-250Resource注解它通过其独特的名称来定义来识别特定的目标这是一个与所声明的类型是无关的匹配过程因语义差异集合或Map类型的bean无法通过Autowired来注入因为没有类型匹配到这样的bean为这些bean使用Resource注解通过唯一名称引用集合或Map的beanAutowired适用于fieldsconstructorsmulti-argument method这些允许在参数级别使用Qualifier注解缩小范围的情况Resource适用于成员变量只有一个参数的setter方法所以在目标是构造器或者一个多参数方法时最好的方式是使用Qualifier例子 先定义一个BeanInterface接口 package com.multibean;public interface BeanInterface {}在定义两个实现类 package com.multibean;import org.springframework.stereotype.Component;Component
public class BeanInterfaceImpl implements BeanInterface {}package com.multibean;import org.springframework.stereotype.Component;Component
public class BeanInterface2Impl implements BeanInterface {}定义BeanInvoker实现Qualifier指定bean package com.multibean;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;Component
public class BeanInvoker {AutowiredQualifier(beanInterfaceImpl)private BeanInterface beanInterface;public void say(){if(null ! beanInterface){System.out.println(beanInterface.getClass().getName());}else{System.out.println(BeanInterface is null.);}}}单元测试 package com.multibean;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class UnitTest {Testpublic void test(){ApplicationContext context new ClassPathXmlApplicationContext(classpath:spring-beansnnotation.xml);BeanInvoker beanInvoker (BeanInvoker)context.getBean(beanInvoker);beanInvoker.say();}
}结果 七月 06, 2015 11:41:38 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext1e397bcb: startup date [Mon Jul 06 23:41:38 CST 2015]; root of context hierarchy
七月 06, 2015 11:41:38 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [spring-beansnnotation.xml]
com.multibean.BeanInterfaceImpl 修改BeanInvoker package com.multibean;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;Component
public class BeanInvoker {AutowiredQualifier(beanInterface2Impl)private BeanInterface beanInterface;public void say(){if(null ! beanInterface){System.out.println(beanInterface.getClass().getName());}else{System.out.println(BeanInterface is null.);}}}结果 七月 06, 2015 11:43:38 下午 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext1e397bcb: startup date [Mon Jul 06 23:43:38 CST 2015]; root of context hierarchy
七月 06, 2015 11:43:38 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [spring-beansnnotation.xml]
com.multibean.BeanInterface2Impl 转载于:https://www.cnblogs.com/JsonShare/p/4625753.html