当前位置: 首页 > 面试题库 >

Spring自动装配仅适用于接口

欧阳向文
2023-03-14
问题内容

我对Spring框架很陌生,遇到了以下问题。

我有一个接口ClassA,由class ClassA1和实现ClassA2

我将以下bean定义添加到 applicationContext.xml

<bean id="class1" class="com.abc.ClassA1" />
<bean id="class2" class="com.abc.ClassA2" />

我想自动连接以下两个实现类。

@Autowired
private ClassA1 classA1;

@Autowired
private ClassA2 classA2;

上面的代码抛出错误为

无法自动写入字段:com.abc.ClassA1 com.abc.SomeClass.classA1;
嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有匹配类型[com.abc.ClassA1]的bean

但是,如果我将自动装配更改为界面,如下所示:

@Autowired
ClassA classA1;

然后将ClassA1自动连接到变量。我不知道如何将变量自动连接到ClassA2。


问题答案:

我尝试了多种方法来解决此问题,但是我可以通过以下方式使其工作。

@Autowired
private ClassA classA1;

@Autowired
private ClassA classA2;

在应用程序上下文中,我如下定义了bean:

<bean id="classA1" class="com.abc.ClassA1" autowire="byName" />
<bean id="classA2" class="com.abc.ClassA2" autowire="byName" />


 类似资料:
  • 主要内容:1. 引入依赖,2. 开启组件扫描,3. 使用注解定义 Bean,4. 基于注解方式实现依赖注入,示例从 Java 5 开始,Java 增加了对注解(Annotation)的支持,它是代码中的一种特殊标记,可以在编译、类加载和运行时被读取,执行相应的处理。开发人员可以通过注解在不改变原有代码和逻辑的情况下,在源代码中嵌入补充信息。 Spring 从 2.5 版本开始提供了对注解技术的全面支持,我们可以使用注解来实现自动装配,简化 Spring 的 XML 配置。 Spring 通过注解

  • 主要内容:Spring 自动装配,自动装配规则,示例我们把 Spring 在 Bean 与 Bean 之间建立依赖关系的行为称为“装配”。 Spring 的 IOC 容器虽然功能强大,但它本身不过只是一个空壳而已,它自己并不能独自完成装配工作。需要我们主动将 Bean 放进去,并告诉它 Bean 和 Bean 之间的依赖关系,它才能按照我们的要求完成装配工作。 在前面的学习中,我们都是在 XML 配置中通过 <constructor-arg>和 <

  • 若要自动排列在画布上的对象,点击 “自动布局”按钮。若要更改自动布局,从菜单选择“图表”->“自动布局选项”并设置以下选项: 对象之间的空间 在图表中对象之间的距离。 试验次数 自动布局输出的品质。 自动调整维度 自动选择合适的图表维度。 调整适合的表大小 自动调整表的大小以适合其内容。

  • 若要自动排列在画布上的对象,点击 “自动布局”按钮。若要更改自动布局,从菜单选择“图表”->“自动布局选项”并设置以下选项: 自动调整图表维度 自动选择合适的图表维度。 调整适合的表大小 自动调整表的大小以适合其内容。 品质 自动布局输出的品质。 对象距离 在图表中对象之间的距离。

  • Navicat 让你使用“Windows 任务计划程序”来在一个或多个固定间隔期自动运行工作,并可设置在特定日期和时间开始和结束。在自动运行中,可以从数据库添加查询、备份、数据传输、数据同步、导入、导出、MongoDump、MongoImport、MongoExport、MapReduce。你可以在一个批处理作业里定义要运行的工作列表,并可手动或在指定的时间里运行它。在主窗口中,点击 “自动运行”

  • Navicat 让你在一个或多个固定间隔期自动运行任务。在自动运行中,可以从数据库添加查询、备份、数据传输、数据同步、导入、导出、MongoDump、MongoImport、MongoExport、MapReduce。你可以在一个批处理作业里定义要运行的工作列表,并手动或在指定的时间里运行它。在主窗口中,点击 “自动运行”来打开自动运行的对象列表。 【提示】批处理作业文件保存于默认的路径,例如:~